Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   PageControl auf anderem Formular steuern (https://www.delphipraxis.net/165209-pagecontrol-auf-anderem-formular-steuern.html)

JKHero 18. Dez 2011 21:32

PageControl auf anderem Formular steuern
 
Moin Moin und erstmal frohen 4. Advent,

ich bräuchte Hilfe mit einer Formel:
Ich habe eine MainForm und darauf ein PageControl abgelegt. Die einzelnen Tabs der PageControl sind einfache "Lernkarten". zu jeder dieser Lernkarten soll nun eine Lösung entstehen. Folgendes habe ich dafür schon eingestellt. Auf jeder Karte ist ein Button, der die Lösung anzeigen soll. Die Lösung soll auf einem anderen Formular angezeigt werden. Das hab ich bereits mit "ShowModal" zusammengebastelt. Nun möchte ich aber alle meine Lösungen auf diesem Formualr unterbringen weswegen ich auch auf dieses Formular ein neues PageControl gelegt habe. Was muss ich nun Schreiben, damit ich in meiner MAIN.PAS die PageControl des Formulares steuern kann. Mit "Cards1.ActivePage := TabSheet1;" geht das nicht.
gibt es da ne Lösung???

Danke

haentschman 18. Dez 2011 21:38

AW: PageControl auf anderem Formular steuern
 
Moin zurück...

wie wäre es mit Form2.Cards1.ActivePageIndex := dein gewünschter Index ?

JKHero 18. Dez 2011 21:53

AW: PageControl auf anderem Formular steuern
 
Joa, er zeigt mir zumindest schonmal keinen Fehler an. Allerdings öffnet er immer nur den gleichen Tab, obwohl in der PAS unterschiedliche Tabs stehen. Habe die Buttons auch schon überprüft, ob vielleicht das gleich drin steht. is aber nicht der Fall

haentschman 18. Dez 2011 22:32

AW: PageControl auf anderem Formular steuern
 
Zeig doch mal ein wenig Code. Wie rufst du was von wo auf... Sonst machen wir hier noch bis Weihnachten lustiges Beruferaten :zwinker:

alphaflight83 19. Dez 2011 08:03

AW: PageControl auf anderem Formular steuern
 
Was funktioniert denn nicht?
Bei mir funktioniert
Delphi-Quellcode:
FormResults.PageControl.ActivePage := FormResults.TabSheet3;
ohne Probleme.

JKHero 19. Dez 2011 14:30

AW: PageControl auf anderem Formular steuern
 
ich füg das mal direkt ein, da er anscheinend procedure etc nicht übernimmt.


procedure TMainForm.Button32Click(Sender: TObject);
begin
Form1.ShowModal;
Form1.Solution1.ActivePage := TabSheet2;
end;

procedure TMainForm.Button26Click(Sender: TObject);
begin
Form1.ShowModal;
Form1.Solution1.ActivePage := TabSheet1;
end;

Die Aktionen der Buttons sind auch schon überprüft und müssten auch stimmen.

DeddyH 19. Dez 2011 14:34

AW: PageControl auf anderem Formular steuern
 
Zitat:

Delphi-Quellcode:
Form1.Solution1.ActivePage := TabSheet2;

ist in diesem Fall gleichbedeutend mit
Delphi-Quellcode:
Form1.Solution1.ActivePage := self.TabSheet2;
Das dürfte ja nicht das sein, was Du beabsichtigst.

Bummi 19. Dez 2011 14:35

AW: PageControl auf anderem Formular steuern
 
Form1.Solution1.ActivePage := Form1.TabSheet2;

JKHero 19. Dez 2011 14:40

AW: PageControl auf anderem Formular steuern
 
Version 1.0 heißt es schon ;)

Aber das Form1. nach Active Page hat nichts geändert. es wird nach wie vor bei beiden aktionen tabshee1 angezeigt... :(

DeddyH 19. Dez 2011 14:50

AW: PageControl auf anderem Formular steuern
 
Also, unter Delphi 2007 funktioniert das hier bei mir. Hast Du evtl. übersehen, dass Du ActivePage erst setzt, wenn das Form2 bereits angezeigt wurde, d.h. die Änderung erst beim erneuten Aufruf von Show(Modal) zum Tragen kommt?

JKHero 19. Dez 2011 15:02

AW: PageControl auf anderem Formular steuern
 
Das hört sich schonmal nach dem problem an was ich habe. Muss ich dann einfach beim ersten Button das ActivePage rausnehmen? Dann zeigt er mir nämlich ne Fehler an...

Ich könnte es glaub ich auch mit "SelectNextPage". machen, dann kann man aber die einzelnen Lernkarten nicht mehr mit ihren entsprechenden Lösungen aufrufen.

Medium 19. Dez 2011 15:03

AW: PageControl auf anderem Formular steuern
 
Das wird das letzte Stückchen zum Ziel sein, denn ShowModal blockiert die Ausführung in der aufrufenden Methode so lange das Modale Fenster geöffnet ist.

Und nein, an sich musst du einfach nur die jeweils 2 Zeilen miteinander tauschen.

JKHero 19. Dez 2011 15:10

AW: PageControl auf anderem Formular steuern
 
hab die zeilen vertauscht und es klappt immer noch nicht. Muss ich die Form "speziell" schließen? Eigentlich reicht doch auf das rote x zu drücken.....?!

DeddyH 19. Dez 2011 15:14

AW: PageControl auf anderem Formular steuern
 
Das heißt, es sieht jetzt ungefähr so aus?
Delphi-Quellcode:
procedure TfrmMain.Button1Click(Sender: TObject);
begin
  frmTabTest.pcTest.ActivePage := frmTabTest.TabSheet1;
  frmTabTest.ShowModal;
end;

procedure TfrmMain.Button2Click(Sender: TObject);
begin
  frmTabTest.pcTest.ActivePage := frmTabTest.TabSheet2;
  frmTabTest.ShowModal;
end;
Klappt bei mir erwartungsgemäß super. Hast Du evtl. noch Code im OnShow des anderen Formulars, der ActivePage ggf. noch einmal ändert?

JKHero 19. Dez 2011 15:18

AW: PageControl auf anderem Formular steuern
 
Delphi-Quellcode:
procedure TMainForm.Button26Click(Sender: TObject);
begin
 Form1.Solution1.ActivePage:= TabSheet1;
 Form1.ShowModal;
end;

procedure TMainForm.Button32Click(Sender: TObject);
begin
 Form1.Solution1.ActivePage := TabSheet2;
 Form1.ShowModal;
end;
ich denk mal da tut sich nicht viel bei meiner.....

DeddyH 19. Dez 2011 15:20

AW: PageControl auf anderem Formular steuern
 
Und so?
Delphi-Quellcode:
procedure TMainForm.Button26Click(Sender: TObject);
begin
 Form1.Solution1.ActivePage:= Form1.TabSheet1;
 Form1.ShowModal;
end;

procedure TMainForm.Button32Click(Sender: TObject);
begin
 Form1.Solution1.ActivePage := Form1.TabSheet2;
 Form1.ShowModal;
end;

JKHero 19. Dez 2011 15:21

AW: PageControl auf anderem Formular steuern
 
NICE!!!!!!!

habs mit zwei karten ausprobiert und bis jetzt läufts.

Herzlichen Dank

DeddyH 19. Dez 2011 15:23

AW: PageControl auf anderem Formular steuern
 
Da hast Du #7 und #8 wohl übersehen :zwinker:

JKHero 19. Dez 2011 15:24

AW: PageControl auf anderem Formular steuern
 
Ne, hab ich gesehen. Aber die Mischung machts ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:17 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