Newsgroup: it.comp.lang.delphi
Titolo: Creazione di interfaccia grafica runtime

Io ho un TPageControl dove in una TTabSheet devo, a seconda di un 
parametro presente altrove, visualizzare diversi componenti.
Ad esempio se il mio parametro vale "1" dovrò visualizzare 3 label e 3 
caselle di testo, se vale "2", due label diverse (con caption diverse da 
quelle precedenti) e altre due caselle di testo.
Ora mi basterebbe avere "l'incipit" di come poter trattare questa 
questione, grazie mille :)
Frank

l'evento show dei tabsheet?
AS

 l'evento show dei tabsheet?
Devo pensare se riesco ad avere anche una "impaginazione" decente in 
questa maniera, cmq probabilmente sì.
Grazie per il suggerimento!
Frank
PS: magari il quesito è banale, ma devo fare un programma per uno stage 
da zero conoscendo poco e nulla di delphi fino ad adesso...e tra un mese 
ne va della mia assunzione, cercate di capirmi :)

 parametro presente altrove, visualizzare diversi componenti.
In Delphi puoi costruire un TFrame per ognuna delle sezioni visibili e 
poi piazzare l'uno o l'altro a seconda dei casi (File/New/Frame).

 questione, grazie mille :)
Forse è un esempio più complicato di ciò che ti serve effettivamente per 
risolvere il tuo problema, ma ti segnalo ugualmente la lettura di un mio 
"tip" che potrebbe contenere informazioni utili alla tua causa ed essere 
"piegato al tuo volere". :-)
http://www.marco.breveglieri.name/index.php?page_id=22
Ciao,
   Marco.
-- 
MARCO BREVEGLIERI
  (
http://www.marco.breveglieri.name
)

Marco Breveglieri wrote:

Grazie mille, sto andando a dormire, domani ci darò un'occhiata molto 
volentieri :)
Frank

 Grazie mille, sto andando a dormire[...]
Spero che non sia conseguenza dell'aver letto il codice di Marco ;-P ;-P

Andrea Laforgia wrote:

Oggi un mio collega mi ha suggerito una soluzione del genere, a dire il 
vero non c'ho capito tanto (mi ha accennato ad un problema se poi devo 
accedere a questi Frame "fuori" dalla sezione di codice in cui li ho 
creati).
Mi viene molto più facile predisporre diversi Panel e visualizzare 
quello che mi serve a seconda del caso, però ad intuito la soluzione è 
meno elegante probabilmente, quindi cercherò di provare anche 
quest'altra idea (male che vada vi domanderò delucidazioni).
Frank
PS: non mi sono addormentato leggendo il codice di Marco, stavo già 
andando a nanna :)
 

 quello che mi serve a seconda del caso
Molto difficile (e antipatico) da gestire a disegno.
Molto meglio i frame.

 Non so quale sia il problema specifico a cui si riferiva il tuo collega.
Aspetta che vedo se ho capito:
io ho bisogno di n visualizzazioni diverse, quindi n Frame (n oggetti). 
Quando mi serve la visualizzazione i-esima, istanzio l'i-esimo Frame, 
quando non mi serve piů lo distruggo.
E' cosě o ho preso un granchio?
Frank

 io ho bisogno di n visualizzazioni diverse, quindi n Frame (n oggetti). 
Preciso che il fatto di avere un TPageControl e poi la necessità di 
alternare diverse "sottopagine" all'interno di una sheet del 
TPageControl mi puzza un po'.  Mi lascia pensare a un cattivo design 
dell'interfaccia.  Ma potrebbe non essere così, comunque.
unit Unit1;
interface
uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, 
Forms,
   Dialogs, StdCtrls, ComCtrls, Unit2, Unit3;
type
   TForm1 = class(TForm)
     PageControl1: TPageControl;
     TabSheet1: TTabSheet;
     TabSheet2: TTabSheet;
     RichEdit1: TRichEdit;
     Button1: TButton;
     Button2: TButton;
     procedure Button1Click(Sender: TObject);
     procedure Button2Click(Sender: TObject);
     procedure FormCreate(Sender: TObject);
   private
     A: TFrame2;
     B: TFrame3;
   public
     { Public declarations }
   end;
var
   Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
   PageControl1.ActivePage := TabSheet2;
   B.Visible := False;
   A.Visible := not B.Visible;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
   PageControl1.ActivePage := TabSheet2;
   A.Visible := False;
   B.Visible := not A.Visible;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
   A := TFrame2.Create(TabSheet2);
   B := TFrame3.Create(TabSheet2);
   A.Parent := TabSheet2;
   A.Visible := False;
   B.Parent := TabSheet2;
   B.Visible := False;
end;
end.
// ----------------------------------------------
unit Unit2;
interface
uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, 
Forms,
   Dialogs, StdCtrls;
type
   TFrame2 = class(TFrame)
     ListBox1: TListBox;
   private
     { Private declarations }
   public
     { Public declarations }
   end;
implementation
{$R *.dfm}
end.
// ----------------------------------------------
unit Unit3;
interface
uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, 
Forms,
   Dialogs, StdCtrls;
type
   TFrame3 = class(TFrame)
     RadioButton1: TRadioButton;
     RadioButton2: TRadioButton;
     RadioButton3: TRadioButton;
   private
     { Private declarations }
   public
     { Public declarations }
   end;
implementation
{$R *.dfm}
end.

 unit Unit1;
[cut]
Capito, grazie mille, è più semplice di quel che pensavo :)
Mi dai il permesso di usarlo (ritoccato ovviamente) per il mio progetto 
vero?
Per la questione dell'interfaccia, se vuoi ti spiego da cosa nasce, ne 
abbiamo discusso in 3 (io avevo meno voce degli altri in capitolo :P) e 
cmq per questo caso particolare nel vero senso della parola mi sembra 
idoneo (in ogni caso devo farlo così, quindi non posso farci tanto!).
Frank

 vero?
Certo, non ho il copyright sulle tecniche messe a disposizione da Delphi 
;-) ;-)