Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [Delphi] - Una sola Procedura per aprire + form!

    Ciao a tutti, sto cercando di realizzare un'applicazione MDI con sul form base un'oggetto stile Barra OutLook che consenta di aprire le varie form.
    Sul file .dpr non creo nessuna form per avere all'avvio il programma vuoto quindi quando vado a cliccare sulla barra in base all'item selezionato chiamo una procedura passandogli due parametri:

    ApriForm(TForm1, form1);

    cosa succede delphi assegna a form1 il valore Tform1 perche sulla form numero 1 nelle variabili globali c'è Tform1:form1;

    come posso fare per passare ad una procedutra tipo:

    procedure ApriForm(Tform_xxx: TComponentClass; Form_xxx:TClass );
    begin
    Application.CreateForm(TForm_xxx, Form_xxx);
    end;

    la TComponentClass e La TClass del form da Apriere?
    Grazie a tutti!

  2. #2
    Please Help me!

  3. #3
    UP

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288

    Creazione di finestre...

    Ti sei risposto da solo!

    Basta creare una procedura a cui passare la classe del form da creare ed eventualmente una variabile in cui appoggiare il riferimento all'oggetto.

    Un esempio:
    codice:
    procedure CreaForm(AFormClass: TFormClass; AFormReference: TForm);
    begin
      Application.CreateForm(AFormClass, AFormReference);
    end;
    Questa procedura prende come parametri una classe di form da creare e una variabile di tipo TForm in cui memorizzare il riferimento.
    Un esempio di chiamata potrebbe essere il seguente:
    codice:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      CreaForm(TForm2, Form2);
    end;
    Ovviamente, se prevedi di creare più istanze della stessa form, puoi eliminare le variabili globali predefinite Form1, Form2, ecc. e usare una variabile privata che sia di tipo compatibile, oppure inserendo il riferimento alla form creata in una lista per mantenere tutti i riferimenti alle finestre aperte.

    Spero di averti dato indicazioni utili.

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

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

  5. #5
    Ummm.. non funge..
    nella procedura

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    CreaForm(TForm2, Form2);
    end;

    assegna a Form2 il valore nil....

    Sto a impazzì

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288

    Whoops!

    Scusami, mi sono sbagliato io!

    Nella procedura CreaForm manca un var:
    codice:
    procedure CreaForm(AFormClass: TFormClass; var AFormReference: TForm);
    begin
      Application.CreateForm(AFormClass, AFormReference);
    end;
    Riprova...

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

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

  7. #7
    Mi sa che ancora ci manca qualcosa :
    quando chiamo la procedura

    CreaForm(Tform1, form1);

    mi da questo errore:

    Types of actual and formal var parameters must be identical!!!

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288

    Casting...

    Prova ad eseguire un casting in questo modo:
    codice:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      CreaForm(TForm2, TForm(Form2));
    end;
    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  9. #9
    Funge!!!!!!!!!!!Funge!!!!!!!!!!!Funge!!!!!!!!!!!Fu nge!!!!!!!!!!!Funge!!!!!!!!!!!Funge!!!!!!!!!!!Fung e!!!!!!!!!!!Funge!!!!!!!!!!!Funge!!!!!!!!!!!Funge! !!!!!!!!!!Funge!!!!!!!!!!!Funge!!!!!!!!!!!Funge!!! !!!!!!!!Funge!!!!!!!!!!!Funge!!!!!!!!!!!Funge!!!!! !!!!!!


    Ave a te o alka!!!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.