Ciao a tutti!
Vorrei aggiungere oggetti (TLabel, TEdit) in runtime alla mia form.
Riesco a creare gli oggetti ma non ad aggiungerli, come posso fare? Grazieeeeeeeee!
Ciaoooooooooooo
Ciao a tutti!
Vorrei aggiungere oggetti (TLabel, TEdit) in runtime alla mia form.
Riesco a creare gli oggetti ma non ad aggiungerli, come posso fare? Grazieeeeeeeee!
Ciaoooooooooooo
Forse ti riferisci al fatto che i controlli creati non sono visibili? Devi impostare la proprietà Parent affinchè faccia riferimento al controllo contenitore per ciascun controllo.
Ad esempio, in un metodo di creazione dei controlli appartenente alla classe del form puoi scrivere qualcosa del tipo
dove Self è l'istanza della form TMyForm in esame.codice:procedure TMyForm.CreateControls; var MyLabel: TLabel; begin MyLabel := TLabel.Create(Self); MyLabel.Parent := Self; MyLabel.Left := 10; MyLabel.Top := 10; end;
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
OK grazie mille, funziona!
Ora vorrei accedere ai TEdit che ho appena aggiunto tramite il nome del componente...come posso fare?![]()
Usa il metodo FindComponent dell'owner (generalmente, il form contenitore).Originariamente inviato da alanf1981
Ora vorrei accedere ai TEdit che ho appena aggiunto tramite il nome del componente...come posso fare?![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
ciao a tutti!
ho aggiunto a una form Intraweb dei combo box in runtime in questo modo :
tempCombo := TIWComboBox.Create(self);
tempCombo.Name := nome;
with tempCombo do
begin
autoSize := true;
width := 200;
parent := self;
itemIndex := 0;
font.size := 9;
visible := true;
end;
Successivamente devo poter verificare gli itemIndex di ogni combobox...(i nomi dei combobox gli ho memorizzati in una TStringList)
Ho fatto cosi ma nn funziona, mi ritorna sempre 0 come itemIndex....![]()
for i := 0 to datamodule1.list.Count-1 do
begin
n := 'label' + datamodule1.listI[i];
c := nil;
c := TIWComboBox(FindComponent(n));
if c <> nil then
begin
k := c.itemIndex;
webApplication.showmessage(inttostr(k) + ' ' + n);
end;
end;
Grazie mille!!!![]()
In quale evento hai inserito il controllo della selezione?Originariamente inviato da alanf1981
Ho fatto cosi ma nn funziona, mi ritorna sempre 0 come itemIndex....![]()
Inoltre, perchè le caselle vengono necessariamente create a runtime? Non sono certo che questo tipo di soluzione venga correttamente gestito da IntraWeb...
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Il controllo della selezione non l'ho inserito in nessun evento,devo farlo?
E' strano xchè la FindComponent non mi restituisce nil, quindi vuol dire che il componente lo trova ma nn accedo alle proprietà Items correttamente...
Trovo che sia una condizione (quasi) impossibile...deve accadere qualcosa affinchè tu stabilisca che è giunto il momento di leggere l'elemento attivo.Originariamente inviato da alanf1981
Il controllo della selezione non l'ho inserito in nessun evento,devo farlo?
La FindComponent appartiene all'infrastruttura della VCL stessa di Delphi, e pertanto restituisce il componente avente il nome indicato che ha come owner l'oggetto cui si fa riferimento nella chiamata a FindComponent; questo però non include che, a seconda delle esigenze e delle condizioni di utilizzo, il controllo si comporti poi in modo corretto o possa essere utilizzato quando non è il momento.Originariamente inviato da alanf1981
E' strano xchè la FindComponent non mi restituisce nil, quindi vuol dire che il componente lo trova ma nn accedo alle proprietà Items correttamente...
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Ops ho trovato l'errore!!!
Sbagliavo il nome del componente da cercare...![]()
pardon!!!![]()
E per assegnare in runtime un evento ad una procedura?
In pratica vorrei che l'evento OnChange del comboBox appena creato puntasse a una mia procedura.
grazie milleeeee!