Casa
Top.Mail.Ru Yandeks.Metrika
Fórum: "Principal";
Arquivo atual: 2002.01.08;
Download: [xml.tar.bz2];

Para baixo

Determinar o número do item de menu Encontre agências semelhantes


T2   (2001-12-16 07:29) [0]

Programaticamente crie um menu. Eu empurro os nomes dos discos disponíveis para o menu popup (não se sabe com antecedência quantos são). Como descobrir qual item de menu foi selecionado, preferencialmente em um procedimento de processamento?



KilkennyCat   (2001-12-16 08:02) [1]

Eu faço isso:

Crio um procedimento de processamento para o qual encaminhar cliques de todos os pontos. tipo:

procedimento TForm1.popClick (Remetente: TObject);
começar
se remetente = b, então showmessage ("b"); // item clicado chamado b
se remetente = a então showmessage ("a"); // item clicado chamado
end;

Obviamente, com um grande número de pontos, você precisa ser indexado.



T2   (2001-12-16 08:59) [2]

Sim, mas os nomes "a" e "b" são desconhecidos antes da criação. Esses itens de menu não estão disponíveis quando
compilação e ao tentar comparar remetente = a, o erro "Identificador não declarado:" a. é lançado. O código pode ser mais claro?

procedimento TMain.pu2Popup (Remetente: TObject);
var s: tstringlist; i: byte; NewItem: TMenuItem; f: int64; d: string [1];
começar
pu2.Items.Clear; s: = tstringlist.create;
si.GetDriveList (s); para i: = 0 para s.Count-1 começa
NewItem: = TMenuItem.Create (Self);
d: = cópia (maiúsculas (s.strings [i]), 1,1);
f: = sem disco (ord (d [1]) - 64); Se f = -1, então f: = 0;
NewItem.Caption: = "&" + d + ": (" + Inttostr (f) + "bytes)";
newitem.OnClick: = ddd;
imagelist1.getbitmap (0, newitem.Bitmap);
pu2.items.Add (NewItem);
fim; s.free;
end;

procedimento tmain.ddd (remetente: tobject);
começar
se remetente = c1, mostre a mensagem ("Disco <C> selecione"); // então?
end;

Está tudo bem?



KilkennyCat   (2001-12-16 09:07) [3]

hum ... na minha opinião, é necessário criar NewItem.Name (por exemplo, a)



Anatoly Podgoretsky   (2001-12-16 10:11) [4]

Você tem NewItem.Caption a segunda letra é o nome da unidade, isso é suficiente para identificar



Dmitriy(new)   (2001-12-16 12:09) [5]

procedimento tmain.ddd (remetente: tobject); var d: string [1];
começar
d: = cópia (TMenuItem (remetente) .Caption, 2,1);
showmessage ("Disco <" + D + "> selecione");
// se remetente = c1 então showmessage ("Disk <C> select"); // então?
end;



Петрович   (2001-12-17 04:47) [6]

Ou você pode tentar usar a propriedade Tag!



GennadyS   (2001-12-17 08:45) [7]

Eu sempre usei a propriedade TAG nesses casos. E, dependendo do número de pontos, eu sabia exatamente qual clique. (para todos os pontos, um único procedimento de processamento) Neste procedimento:

case (remetente como TComponent) .tag de
1: // processamento de disco B
2: // - / - C
...



Страницы: 1 filial inteira

Fórum: "Principal";
Arquivo atual: 2002.01.08;
Download: [xml.tar.bz2];

em cima









Memória: 0.57 MB
Hora: 0.024 c
1-22227
Tosov
2001-12-15 10:43
2002.01.08
Como trabalhar com o TInplaceEdit


4-22511
Plug & Play
2001-10-29 22:23
2002.01.08
Como desligar o computador por meio de programação?


1-22175
viajante
2001-12-20 16:06
2002.01.08
sobre a dica e


3-21967
SklifF
2001-12-05 11:32
2002.01.08
sobre SQL


1-22194
Arte
2001-12-15 09:28
2002.01.08
Apenas uma pergunta!





afrikaans albanês Arabic armênio azerbaijano basco belarusian Bulgarian catalão Chinês simplificado) Chinês tradicional) croata checo dinamarquês Dutch Inglês estoniano filipino Finnish French
Galego georgiano German grego crioulo haitiano hebraico hindi húngaro islandês Indonesian irlandês Italian Japanese Korean letão lituano macedónio Malay maltês Norwegian
persa polonês Portuguese Romeno Russa sérvio Slovak esloveno Espanhol swahili sueco tailandês turco ucraniano urdu vietnamita galês ídiche bengali bósnio
cebuano esperanto gujarati hausa hmong igbo javanês kannada khmer lao latino maori marata mongol Nepali punjabi somali tâmil telugu yoruba
zulu
Английский francês Alemão Italiano Португальский russo Espanhol