![]() |
PageControl
HAllo Leuts,
in mühevoller Arbeit :lol: habe ich es endlich hinbekommen einen PageControl erfolgreich als Array auf ein Form zu zauber :
Code:
Aber jetzt, um Himmels Willen, wie spricht man einen einzelnen Tab so an, dass beim Klick auf einen Tab auch was passiert.
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; In der Hilfe findet man ja gar nichts. Bite, bitte helft mir! Grüsse Privateer3000 |
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. |
@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: |
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 |
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; |
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:
Kann das nicht nachvollziehen.
if Sender is TTabsheet then
begin case TTabsheet(Sender).Tag of 0 : ShowMessage('Einleitung'); end; Schönes Wochenende Privateer3000 |
Zitat:
Code:
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.
OnShow := MyTabSheetOnShowEventMethode;
|
Danke Luckie, das meint ich ja, das superultramegakosmischlange Wort
MyTabSheetOnShowEventMethode ein "eigenes" Wort ist. Sorry aba: Zitat:
Nix verstanden...Roger..over...out |
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* |
oki
sieht jetzt so aus:
Code:
wie identifizier ich jetzt diesen Klick in einer procedure?
0 : begin
Caption :='Einleitung'; OnShow := onclick; Tag := 1; end; HALT HALT HALT....habs begriffen in der case..richtig?? AHHHHHHHHHHH Danke an alle |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz