Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi PageControl (https://www.delphipraxis.net/154-pagecontrol.html)

Privateer3000 14. Jun 2002 21:12


PageControl
 
HAllo Leuts,

in mühevoller Arbeit :lol: habe ich es endlich hinbekommen einen PageControl erfolgreich als Array auf ein Form zu zauber :
Code:
procedure TForm5.FormCreate(Sender: TObject);
var
  i: integer;
begin
  with PageControl1 do
    for i := 0 to 12 do
      with TTabSheet.Create(Self) do
      begin
        PageControl := PageControl1;
        Caption := IntToStr(Pages[i].TabIndex);
        case Pages[i].Tabindex of
0 : Caption :='Einleitung';
1 : Caption :='Gerechtigkeitsstreben';
2 : Caption :='Kampfbereitschaft';
3 : Caption :='Sicherheitsstreben';
4 : Caption :='Harmoniebedürfnis';
5 : Caption :='Fröhlichkeit';
6 : Caption :='Fremdbestimmung';
7 : Caption :='Sentimentalität';
8 : Caption :='Hilfsbereitschaft';
9 : Caption :='Intellektualität';
10 : Caption :='Erfolgswille';
11 : Caption :='Sensibilität';
12 : Caption :='Selbstbestimmung';
end;
end;
end;
Aber jetzt, um Himmels Willen, wie spricht man einen einzelnen Tab so an, dass beim Klick auf einen Tab auch was passiert.
In der Hilfe findet man ja gar nichts.

Bite, bitte helft mir!

Grüsse
Privateer3000

Christian Seehase 14. Jun 2002 21:31

Moin Privateer,

Du musst auch dem OnChange des PageControls noch eine Routine zuweisen.
Oder allgemeiner gesagt:
Wenn Du eine visuelle Komponente dynamisch erzeugst, musst Du alles, was Du sonst im Objektinspektor einstellen würdest per Programm einstellen. Das gilt für die Eigenschaften ebenso, wie für die Ereignisse.
Eventuelle Routinen, wie eben z.B. die für das OnChange müssen dann natürlich schon exisiteren, damit sie zugewiesen werden können.

Alfons_G 14. Jun 2002 21:55

@Privateer3000
Das ist im Prinzip ganz einfach:
Komponente.onClick := MeinKlick - allerdings darfst Du nicht vergessen, Deine Prozedur muß alle erforderlichen Parameter für das jeweilige Ereignis aufweisen. Also zumindest das berühmte Sender as TObject muss vorhanden sein ;)

:coder:

Privateer3000 14. Jun 2002 22:00

Danke Christian und Alfons,

ich glaub da brauch ich ein praktisches Beispiel.
Und ausserdem, muss diese Festlegung in der selben Schleife, also wo die Tabs erstellt werden hinzugefügt werden, oderwo anders?

Grüsse

Christian Seehase 14. Jun 2002 23:21

Moin Privateer,

das könnte so aussehen:

Code:
type
  TForm1 = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    procedure FormCreate(Sender: TObject);
    procedure MyTabSheetOnShowEventMethode(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
var
  i: integer;
begin
  with PageControl1 do
    for i := 0 to 12 do
      with TTabSheet.Create(Self) do
      begin
        PageControl := PageControl1;
        Tag        := i;
//        Caption := IntToStr(Pages[i].TabIndex);
        case Pages[i].Tabindex of
0 : begin
      Caption :='Einleitung';
      OnShow := MyTabSheetOnShowEventMethode;
    end;
1 : Caption :='Gerechtigkeitsstreben';
2 : Caption :='Kampfbereitschaft';
3 : Caption :='Sicherheitsstreben';
4 : Caption :='Harmoniebedürfnis';
5 : Caption :='Fröhlichkeit';
6 : Caption :='Fremdbestimmung';
7 : Caption :='Sentimentalität';
8 : Caption :='Hilfsbereitschaft';
9 : Caption :='Intellektualität';
10 : Caption :='Erfolgswille';
11 : Caption :='Sensibilität';
12 : Caption :='Selbstbestimmung';
end;
end;
end;

procedure TForm1.MyTabSheetOnShowEventMethode(Sender: TObject);
begin
  // Was auch immer dann passieren soll
  if Sender is TTabsheet then
  begin
    case TTabsheet(Sender).Tag of
      0 : ShowMessage('Einleitung');
    end;
  end;
end;

Privateer3000 15. Jun 2002 08:40

Danke Christian
 
Also muss die Eigenschaft beim Erstellen des Pagecontrol festgelegt werden (in der case).Aber statt "MyTabSheetOnShowEvenntMethode" muss das was anderes stehen?!
Ich meine welche Syntax...

Mal noch ne Frage, was passiert eigentlich hier?

Code:
if Sender is TTabsheet then
  begin
    case TTabsheet(Sender).Tag of
      0 : ShowMessage('Einleitung');
    end;
Kann das nicht nachvollziehen.

Schönes Wochenende
Privateer3000

Luckie 15. Jun 2002 08:46

Zitat:

Also muss die Eigenschaft beim Erstellen des Pagecontrol festgelegt werden (in der case).Aber statt "MyTabSheetOnShowEvenntMethode" muss das was anderes stehen?!
Nein. Hier:
Code:
OnShow := MyTabSheetOnShowEventMethode;
Wird dem Tabsheet zugewiesen, was passieren soll bei OnShow. Und in der Prozedur MyTabSheetOnShowEventMethode (noch länger ging es nicht, was Mathias :wink: ) wird noch mal mittels der Tag Eigenschaft unterschieden welcher TabSheet geklickt wurde.

Privateer3000 15. Jun 2002 09:39

Danke Luckie, das meint ich ja, das superultramegakosmischlange Wort
MyTabSheetOnShowEventMethode
ein "eigenes" Wort ist.

Sorry aba:

Zitat:

Wird dem Tabsheet zugewiesen, was passieren soll bei OnShow. Und in der Prozedur MyTabSheetOnShowEventMethode (noch länger ging es nicht, was Mathias ) wird noch mal mittels der Tag Eigenschaft unterschieden welcher TabSheet geklickt wurde.
Bahnhof? :?: Welcher Zug? :shock: Wohin?
Nix verstanden...Roger..over...out

Luckie 15. Jun 2002 09:47

Zieh mal irgendein beliebiges Kontroll auf dein Formular und dann kuck mal im Obejktinspektor, dort findest du eine Eigenschaft "Tag". Dieser Eigenschaft kann ich einen beliebigen 32-Bit-Wert zuweisen. Und Mathias nutzt ihn, im die Einzelnen Sheets auseinander zu halten.

*tutu* *töfftöff* *pfeif*

Privateer3000 15. Jun 2002 11:19

oki
sieht jetzt so aus:
Code:
0 :    begin
        Caption :='Einleitung';
        OnShow := onclick;
        Tag := 1;
        end;
wie identifizier ich jetzt diesen Klick in einer procedure?

HALT HALT HALT....habs begriffen
in der case..richtig??
AHHHHHHHHHHH

Danke an alle


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:46 Uhr.
Seite 1 von 4  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz