Aldeia RPG

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Suporte ao desenvolvimento de jogos


    Enumerando os sons do sistema e de eventos

    GripeBovina
    GripeBovina
    Novato
    Novato


    Mensagens : 23
    Créditos : 15

    Enumerando os sons do sistema e de eventos Empty Enumerando os sons do sistema e de eventos

    Mensagem por GripeBovina Sáb Dez 04, 2010 10:17 pm

    Comece adicionando as units [b]MMSystem e Registry no uses do formulário. Em seguida coloque um botão (TButton1) e uma lista (TListBox1) no formulário.

    No evento OnCreate do formulário você deverá adicionar o código abaixo:

    procedure TForm1.FormCreate(Sender: TObject)*
    var
    reg: TRegistry;
    begin
    reg := TRegistry.Create;
    try
    reg.RootKey := HKEY_CURRENT_USER;
    reg.OpenKeyReadOnly('\AppEvents\EventLabels')*
    reg.GetKeyNames(ListBox1.Items)*
    finally
    reg.Free;
    end;
    end;

    Agora acrescente o código abaixo no evento OnClick do botão:

    procedure TForm1.Button1Click(Sender: TObject)*
    var
    som: string;
    begin
    if ListBox1.ItemIndex = -1 then
    begin
    ShowMessage('Selecione um som na lista')*
    Exit;
    end;

    som := ListBox1.Items[ListBox1.ItemIndex]*
    PlaySound(PAnsiChar(som), 0, SND_ALIAS or SND_ASYNC)*
    end;

    Execute a aplicação agora. Você deverá ter algo semelhante à figura abaixo:

    Enumerando os sons do sistema e de eventos Enumerando_sons_sistema_eventos

    Experimente selecionar um som e clique o botão Executar. Observe o resultado. Para sua comodidade, o código completo desta aplicação pode ser baixado aqui.

    2 - Entendendo o código

    Vamos entender o código? Comece com a declaração de uma variável do tipo TRegistry:

    var
    reg: TRegistry;

    Em seguida use o método Create para criar um objeto TRegistry e armazená-lo na variável reg:

    reg := TRegistry.Create;

    As linhas seguintes:

    reg.RootKey := HKEY_CURRENT_USER;
    reg.OpenKeyReadOnly('\AppEvents\EventLabels')*
    reg.GetKeyNames(ListBox1.Items)*

    definem a chave raiz a ser acessada (RootKey), efetua uma chamada ao método OpenKeyReadOnly para abrir a chave desejada somente para leitura e usa o método GetKeyNames para retornar uma lista de strings contendo os nomes de todas as sub-chaves pertencendo à chave atual. O retorno é armazenada na propriedade Items da ListBox1.

    O clique no botão faz uma chamada à função PlaySound para executar o som desejado.

      Data/hora atual: Qui Nov 21, 2024 7:38 am