Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    92

    [Delphi] Cambiare la caption di una form già aperta

    Salve !

    E' possibile cambiare la Caption di un form
    quando la form è già aperta?
    Provo a spiegarmi meglio...
    Il programma si apriva con fmMain e fmSelCli ..
    selezionando il codice da una comboBox in fmSelCli ottenevo il "NomeCliente", chiudevo la form fmSelCli e la var "NomeCliente" appariva nella caption di fmMain.

    Questa era ed è tutt'ora la procedura che uso.
    Inizialmente funzionava(vedi codice qui sotto) :

    procedure TfmMain.FormActivate(Sender: TObject);
    begin
    Application.CreateForm(TfmSelCli, fmSelCli);
    try
    fmSelCli.ShowModal;
    if fmSelCli.ModalResult = mrOK then
    begin
    fmMain.Caption := 'Cliente '+ NomeCliente;
    fmSelCli.Free;
    end;
    except
    on E: Exception do
    begin
    Beep;
    ShowMessage('Errore su apertura Selezione
    Cliente');
    end;
    end;
    end;

    ..da quando ho aggiunto la Form di Login(la prima a comparire)
    che consente l'accesso e l'apertura del programma
    (e quindi di fmMain e fmSelCli)... la caption della fmMain non cambia più!
    per quale motivo?

    Grazie!
    Kate71

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    E' sempre possibile modificare la Caption di una form, anche quando questa è nascosta.

    Pertanto, il problema è da imputarsi ad un percorso errato che esegue il programma, diverso da quello che ti aspetti, che non esegue la modifica alla Caption.

    Esegui il programma passo per passo, mettendo eventualmente dei "breakpoint" sulle istruzioni che hai riportato per accertarti che, sulla conferma del cliente, la selezione sia corretta.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    92
    L'ho fatto e il valore della variabile è esatto,
    ma non lo scrive sulla caption della form!!
    Dato che non è la prima volta che ci provo..
    ero giunta alla conclusione che essendo stata
    creata la form...la caption non potesse più
    essere cambiata !!

    Non riesco proprio a capire come mai!!

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Non devi controllare il nome di alcuna variabile, ma solo se l'istruzione
    codice:
    fmMain.Caption := 'Cliente '+ NomeCliente;
    viene effettivamente eseguita.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    92
    non ho capito cosa intendi con se
    "viene effettivamente eseguita l'istruzione"
    ma ho risolto in questo modo:
    fmMain.Caption := 'Cliente '+ NomeCliente;
    diventa
    Caption := 'Cliente '+ NomeCliente;
    dato che avviene nella fmMain stessa!!
    forse era per questo motivo?

    Ti ringrazio!!!
    Kate71

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Se il motivo è quello oppure no, dipende da come è strutturata la tua applicazione.

    Generalmente, è sbagliato fare riferimento ad una precisa variabile all'interno del codice di un form, scrivendo ad esempio in un metodo TMainForm.DoSomething qualcosa del tipo MainForm.Caption, poichè il codice della classe, che è identico e funziona allo stesso modo per tutte le istanze (copie) che vengono create, opera direttamente su una sola di queste, cioè quella rappresentata dalla variabile MainForm, in questo caso.

    Nei casi più generali, tuttavia, trattandosi di una form che viene creata una sola volta (mi riferisco alla form principale), il problema non si pone.

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

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

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.