Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: schumi - Agosto 03, 2015, 12:44:14 pm

Titolo: Applicazione MDI
Inserito da: schumi - Agosto 03, 2015, 12:44:14 pm
qualcuno ha provato con successo a creare applicazioni MDI? soprattutto con la possibilità di minimizzare le form figlie in basso.
da una prova veloce con ver 1.4.2 sembra che la main form copra le figlie?????
Titolo: Re:Applicazione MDI
Inserito da: xinyiman - Agosto 03, 2015, 02:03:55 pm
Non ho mai affrontato l'argomento. Sarebbe bello se ci riesci se ci spieghi come hai fatto. Così produciamo materiale in merito
Titolo: Re:Applicazione MDI
Inserito da: schumi - Agosto 04, 2015, 01:16:06 pm
leggendo qua e la in forum delphi sono riuscito utilizzando CreateParented al posto di Create della form child.

nel mondo "Lazarus" non trovo riscontri  ??? ???

Titolo: Re:Applicazione MDI
Inserito da: Stilgar - Agosto 04, 2015, 01:32:02 pm
Shumi, in lazarus l'MDI non è supportato.
Per scelta, non per mancanza.

Scegli una strada alternativa all'MDI. :D

Stilgar
Titolo: Re:Applicazione MDI
Inserito da: schumi - Agosto 04, 2015, 02:46:30 pm
non sono io che non voglio le strade alternative... sono certi clienti ;)

comunque l'MDI è in lavorazione e funzionicchia anche se non completamente cross platform

http://forum.lazarus.freepascal.org/index.php/topic,26112.msg159777.html?PHPSESSID=a2fcfd11fa6a551a199bd5b07e098804#msg159777

verifica su roadmap
Titolo: Re:Applicazione MDI
Inserito da: Stilgar - Agosto 05, 2015, 08:45:22 pm
Prova a vedere se così può anddare bene
Titolo: Re:Applicazione MDI
Inserito da: xinyiman - Agosto 06, 2015, 07:55:46 am
Ho provato anche io a compilare l'esempio, ma non mi permette di spostare o ridimensionare la form child all'interno della form main. Suggerimenti?
Titolo: Re:Applicazione MDI
Inserito da: schumi - Agosto 06, 2015, 09:31:04 am
ho provato impostando formstyle a fsMDIform e fsMDIChild, poi a creare la form figlia sia con
fmChild := TfrmChild.CreateParented(frmMain.Handle);
fmChild.show;
che
fmChild := TfrmChild.Create(self);
fmChild.Parent := frmMain;
fmChild.show;

e in tutti i casi non vedo sostanziali variazioni, uniche accortezze nella form figlia :
procedure TfrmChild.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
  CloseAction := CaFree;
end;

procedure TfrmChild.FormResize(Sender: TObject);
begin
  application.ProcessMessages ;
end;       

sembra funzionare bene (provato solo su windows)

Provando però in un progetto complesso già esistente quando abbassi la form da un errore TWinControl.WMSize loop detected.

appena avrò un po' di tempo farò qualche altra prova.
Titolo: Re:Applicazione MDI
Inserito da: Stilgar - Agosto 07, 2015, 10:22:15 am
:( Con Windows fa tutto come dovrebbe....
D'altra parte era solo un esempio.

Il "trucco" si basa su questa riga :
Codice: [Seleziona]
Child.Parent := self;

Sotto linux non so se possa dare problemi.

Stilgar
Titolo: Re:Applicazione MDI
Inserito da: schumi - Agosto 07, 2015, 12:44:09 pm
secondo roadmap solo interfaccia QT è ultimata e funzionante:

An MDI LCL emulator for widgetsets which does not support MDI, also native implementation of MDI for qt and win32/64. Currently only qt has full MDI support, others are in progress.
Titolo: Re:Applicazione MDI
Inserito da: xinyiman - Agosto 08, 2015, 12:44:49 pm
Ho fatto un po di ricerche e ho trovato questo

http://wiki.lazarus.freepascal.org/MultiDoc

E' una simulazione del MDI ma che è cross platform.
Ho fatto anche un piccolo esempio che allego.
Titolo: Re:Applicazione MDI
Inserito da: xinyiman - Agosto 12, 2015, 04:52:40 pm
Ragazzi qualcuno ha provato la mia versione? Vi funziona bene? Avete approfondito l'argomento?
Titolo: Re:Applicazione MDI
Inserito da: schumi - Agosto 13, 2015, 01:59:14 pm
non ancora, sono giorni di fuoco prima delle ferie  :'(
avevo trovato anch'io multidoc ma sembrava un progetto fermo da anni e quindi ero un po' indeciso.
appena riesco faccio 2 prove e considerazioni.

ciao