Newsgroup: it.comp.lang.delphi
Titolo: PageControl

Con delphi 5 c/s rilevo la seguente anomalia:
A design time inserisco un pagecontrol
A Runtime eseguo un codice che, in base a dei parametri, crea n TabSheet con
una griglia e dovrebbe attivare poi il primo TabSheet
Dico dovrebbe perchè, in effetti, il primo TabSheet risulta attivo e
premuto, ma in realtà, finchè fisicamente non clicco sul Tab viene mostrato
l'ultimo.
Come posso risolvere questa anomalia  ?
Grazie anticipatamente
Andrea

 l'ultimo.
A mio modesto parere il TPageControl ha dei seri problemi ... non solo
questo.
A me si perde le pagine ogni tanto (D5), cioè i componenti che sono dentro.
Cmq per risolverlo, beh penso che tu possa impostare a run-time la pagina
attiva
con TPageControl.ActivePage
Ciao! Davide DG

 ha scritto nel messaggio
news:8olftn$9q7$2...@sirmdpsin16.inwind.it...

Lo faccio già!
Il Tab corrispondente appare premuto, ma il contenuto son si vede fino a che
'fisicamente' (insomma.... non proprio comunque ci dovremmo essere capiti!)
clicco sul tab. Solo allora vedo il TabSheet corretto


Non funziona!
Eccoti una unit d'esempio
Ciao
Andrea
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls;
type
  TForm1 = class(TForm)
    pgCaselle: TPageControl;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
const Indirizzi:array [0..3] of string = ('zero','uno','due','tre');{valori
pilota per l'esempio}
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
var cur :TTabSheet;
    i:integer;
    vedi:TListView;
begin
{Crea il tabSheet}
for i:=low(Indirizzi) to high(indirizzi) do begin
   cur:= TTabSheet.Create(Self);
   with cur do begin
   parent:=self;
   TabVisible:=true;
   PageIndex:=i;
   PageControl:=pgCaselle;
   Caption:=Indirizzi[i];
   Visible:=true;
   end;
   {Crea il ListView, giusto per vedere che effetto fa e quale è il TabSheet
visualizzato}
   Vedi:= TListView.Create(Self);
   with Vedi do begin
    parent:=cur;
    tag:=i;
    visible:=true;
    align:=alClient;
    with items.add do caption:=indirizzi[i];
   end;
 end;
(**
while PgCaselle.activepage.PageIndex > 0 do pgCaselle.SelectNextPage(true);
pgCaselle.activepage:=pgCaselle.pages[3];
**)
end;
end.

 Eccoti una unit d'esempio
[unit cut]
Ecco come uso io il tutto (dietro consiglio di P.Arosio qualche post fa, v.
thread con subj:TPageControl data 24/08/00 iniziato da me), mi sembra di
capire che fai un po' quello che faccio io....e a me funziona...
=========
with PgCtrl do
          for i:= 0 to FoundList.Count-1 do
              begin
                   with TTabSheet.Create(Self) do
                        begin
                             PageControl := PgCtrl;
                             Pages[i].TabVisible := true;
                             Caption := 'Doc n°' + IntToStr(i+1);
                             Editor:=TRichEdit.Create(Self);
                             Editor.Parent:=Pages[i];
                             Editor.Lines.LoadFromFile(FoundList[i]);
                             Editor.ReadOnly:=true;
                             Editor.Align:=alClient;
                        end;
              end;
=============
Mi sembra faccia un po' quello che ti serve.....e non mi da' il minimo
problema...alla fine del tutto il Tab visibile è il 1°...già
attivo...insomma lo vedo...
Spero di avera fatto una buona azione :))
Ciaooooo!!!
PS: uso D4CS
--
DeViL!
=====================================
Togliere ILDISTURBO per rispondere :-)
=====================================
-------------------------------------------------------------
"...tu mi hai illuso che ero un illuso di sogni mi hai privato
ed ora non ti scuso di talento abuso, nella vita di ogni giorno
adesso la mia testa uso..." (ST)
-------------------------------------------------------------

Con Delphi 4 funzionava.....
il problema penso sia nella versione 5
"DeViL" <de...@inwind.itILDISTURBO> ha scritto nel messaggio
news:8p27vc$kj7$1...@lacerta.tiscalinet.it...


> Non funziona!
Azz !! Non so che dirti !! Da me l'ho appena provato e funziona... l'unica
cosa...
il codice è questo :
while PgCaselle.activepage.PageIndex <> 0 do pgCaselle.SelectNextPage(true);
non questo :
while PgCaselle.activepage.PageIndex > 0 do pgCaselle.SelectNextPage(true);
pgCaselle.activepage:=pgCaselle.pages[3]; // <<-- ma così non ti dai la
zappa sui piedi ??
Ciao !! Davide DG

Il codice l-avevo inserito giusto, poi l'avevo remmato prima di postarlo....
Comunque se provi la unit che ho mandato vedrai che alla fine hai
evidenziato il Tab con caption 'zero', mentre il controllo mostrato è quello
associato al Tab 'tre'
O perlomeno, da me succede questo.
Tu hai installato qualche SP di Inprise ?

 O perlomeno, da me succede questo.
A me no... e ho provato il codice prima di postarlo.... cmq io uso
Delphi 5 Enterprise senza nessuna patch.
Non so + che pensare ... !!! Ciao, Davide DG