Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    145

    [Delphi 7] Aggiungere componenti a una form

    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

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    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
    codice:
    procedure TMyForm.CreateControls;
    var
      MyLabel: TLabel;
    begin
      MyLabel := TLabel.Create(Self);
      MyLabel.Parent := Self;
      MyLabel.Left := 10;
      MyLabel.Top := 10;
    end;
    dove Self è l'istanza della form TMyForm in esame.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    145
    OK grazie mille, funziona!
    Ora vorrei accedere ai TEdit che ho appena aggiunto tramite il nome del componente...come posso fare?

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da alanf1981
    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).
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    145
    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!!!

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da alanf1981
    Ho fatto cosi ma nn funziona, mi ritorna sempre 0 come itemIndex....
    In quale evento hai inserito il controllo della selezione?
    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...

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    145
    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...

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da alanf1981
    Il controllo della selezione non l'ho inserito in nessun evento,devo farlo?
    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
    E' strano xchè la FindComponent non mi restituisce nil, quindi vuol dire che il componente lo trova ma nn accedo alle proprietà Items correttamente...
    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.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    145
    Ops ho trovato l'errore!!!
    Sbagliavo il nome del componente da cercare...

    pardon!!!

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    145
    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!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.