Newsgroup: it.comp.lang.delphi
Titolo: TButton a runtime

Come faccio a creare un Bottone (TButton) a runtime e metterlo in una
determinata form (creata anchessa a runtime) e in una determinata
posizione???
Grazie...

 posizione???
procedure TMiaForm.CreaBottone;
var vButton: TButton
begin
    vButton := TButton.Create(Self);
    vButton.Left := <posizione x>
    vButton.Top := <posizione y>
    vButton.Width := <larghezza>
    vButton.Height := <altezza>
    vButton.Caption := <testo>
    vButton.Parent := Self;
end;
p.s.: penso proprio che vorrai gestire l'evento "OnClick" del bottone. Sarà
sufficiente creare una procedura di questo tipo:
procedure TMiaForm.ButtonClick(Sender: TObject);
begin
    ...
    ...
end;
quindi aggiungerai al codice scritto sopra:
    vButton.OnClick := ButtonClick.
ciao
Solid Snake

 end;
Ciao, magari ti conviene dichiarare vButton come globale :)
Ciao, Davide DG

 ha scritto nel messaggio
news:8l028n$o0u$1...@sirmdpsin17.inwind.it...

Non credo, se proprio vuoi avere un po di stile scrivi questo:
Function AddButton (AOwner : TComponent ) : TButton;
Begin
    Result:=TButton.Create(AOwner);
End;
Poi nel codice....
With AddButon(Self) Do
Begin
    Parent:=Self;
    Caption:='...';
    Left:=<X>;
    Top:=<Y>;
    Width:=<W>;
    Height:=<H>;
    Visible:=True;
End;
Puoi inserire tutto in for e creare tutti i pulsanti che vuoi.
Ciao!

     Parent:=Self;...
Sono daccordo ma togli l'istruzione WITH...
ciao
Solid Snake

 Ciao!
Eheh... ok... ma sei *poi* vuoi richiamare qualcosa (metodo, evento,
proprietà, ecc)
di quel componente (tbutton) come fai?  Se ti "perdi" la variabile poi non
puoi più lavorarci su...
Certo, potresti usare findcomponent ... ma non è meglio utilizzare 4 miseri
byte di un puntatore?
Boh... poi dipende ovviamente dall'utilizzo che ne deve fare... :)
Ciaooo!! Davide DG

 ha scritto nel messaggio
news:8l1p2u$dgb$1...@sirmdpsin17.inwind.it...

Ciao Davide, hai ragione, ma con la variabile globale al massimo ne punti
uno, allora è meglio usare una tlist, Ciao!!!


Solid però se togli il with non hai piu il riferimento all'oggetto, anche io
non lo amo molto ma in questo caso è necessario, a meno che tu non
voglia usare una variabile d'appoggio...
PS:
Wow è incredibile come si possa congetturare,( che brutta parola!!), cosi
tanto su un argomento cosi semplice, questo dimostra la grande preparazione
di tutte
le persone che rispondono su questo newsgroup, io sono nuovo di questa news,
e cosi colgo l'occasione per salutare tutti i partecipanti
e fare i miei complimenti...
Ciao!

 Sono daccordo ma togli l'istruzione WITH...
scusa ma non ho niente di meglio da fare
che continuare thread 'inutili'...
una curiosità:
xchè vi fa così schifo WITH?
(provo a sparare, lentezza nella compilazione?, possibili ambiguità?...)
io invece odio le ripetizioni, questione di gusti...
Ciaooo
Alan Solo

 io invece odio le ripetizioni, questione di gusti...
Non ho mai fatto test di performance con with o meno, ma credo che non cambi
proprio nulla, forse l'unico lato negativo
è l'ambiguità e il fatto che l'editor non ti suggerisce ne proprietà ne
metodi.
Ciao!

 io invece odio le ripetizioni, questione di gusti...
Non mi piacciono queste conversazioni sono un pò "logorroiche" e poco
costruttive...
rispondo per l'ultima volta poi non vi disturbo più su questo argomento:
non ho nulla contro l'istruzione WITH !
L'unico problema è dato dal fatto che se tra tre mesi ci metti le mani
dentro quel pezzo di codice e devi far riferimento a un metodo o una
proprietà che non riguarda il Button sei costretto a dichiarare l'oggetto
che ti serve oppure a cambiare metodo:
es.
procedure TForm1.SetupButton(aButton: TButton);
    with aButton do
    begin
        Caption := 'ciao';
        Left := 10;
        ...
        Form1.Caption := 'caption della form';
        ...
        Width := 10;
    end;
come mostrato nell'esempio sopra se devi far riferimento alle proprietà
della form devi utilizzare questo sistema (e a me non piace).
Poi ognuno è libero di fare quello che vuole.
ciao
Solid Snake

 metodi.
x l'ambiguità sono d'accordo, per la seconda che hai detto
lo si può scavalcare in parte con ctrl+space
Ciao!
(su l'idea del thread + lungo e inutile della storia,
stavo scherzando ok? ;-)
Alan Solo

 Poi ognuno č libero di fare quello che vuole.
appunto.
cmq solitamente si usa il with quando si vuole accedere
ad un solo componente, altrimenti diventa quasi controproducente...
per la cronaca non voglio impostare l'uso del with, sia chiaro,
tra l'altro neanche io lo uso quando ho fretta, solo in un secondo tempo
per pulizia del codice...
ti rubo la frase:
Poi ognuno č libero di fare quello che vuole.
Ciao
Alan Solo