Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi PageControl spring automatisch um! (https://www.delphipraxis.net/119240-pagecontrol-spring-automatisch-um.html)

BullsEye 22. Aug 2008 23:07


PageControl spring automatisch um!
 
Hallo Leute, ich habe folgendes Problem:

Jedes mal wenn ich mein Anwendung starte, springt das Programm automatisch auf TabSheet2 auch wenn ich ein anderes anwähle, wechselt das nach ner Sekunde wieder zurück! Und ich finde den Fehler nicht! Im ganzen Code finde ich nichts mit Tabsheet2 oder AktivePageIndex, was darauf hindeuten kann!
Ich habe lediglich eine TreeView und eine Pagecontrol.

Und je nach dem wo ich in die TreeView klicke wird eine der 6 Tabsheets aufgerufen:
Delphi-Quellcode:
procedure TForm2.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
  if (TreeView1.Selected <> nil)then
    case TreeView1.Selected.Index of
      0 : PageControl1.ActivePageIndex := 0;
      1 : PageControl1.ActivePageIndex := 1;
      2 : PageControl1.ActivePageIndex := 2;
      3 : PageControl1.ActivePageIndex := 3;
      4 : PageControl1.ActivePageIndex := 4;
      5 : PageControl1.ActivePageIndex := 5;
    end;
end;

sx2008 23. Aug 2008 00:42

Re: PageControl spring automatisch um!
 
Ich habe dir mal deine Code etwas umgeschrieben, so dass du in der Caption des Formulars siehst,
was gerade passiert.
Delphi-Quellcode:
procedure TForm2.TreeView1Change(Sender: TObject; Node: TTreeNode);
ver
  newindex:integer;
begin
  if TreeView1.Selected <> nil then
  begin
    newindex := TreeView1.Selected.Index;
    self.Caption := Format('Debug-Info: newindex=%d ', [newindex])+ TimeToStr(now);
    PageControl1.ActivePageIndex := newindex; // es geht auch ohne case...of
end;
Du solltest mal schauen, ob ein Veränderung des PageControls nicht vielleicht das TreeView ändert
-> rückkopplung möglich
Hast du einen Timer auf dem Form ?

BullsEye 23. Aug 2008 13:37

Re: PageControl spring automatisch um!
 
Zitat:

Zitat von sx2008
Ich habe dir mal deine Code etwas umgeschrieben, so dass du in der Caption des Formulars siehst,
was gerade passiert.
Delphi-Quellcode:
procedure TForm2.TreeView1Change(Sender: TObject; Node: TTreeNode);
ver
  newindex:integer;
begin
  if TreeView1.Selected <> nil then
  begin
    newindex := TreeView1.Selected.Index;
    self.Caption := Format('Debug-Info: newindex=%d ', [newindex])+ TimeToStr(now);
    PageControl1.ActivePageIndex := newindex; // es geht auch ohne case...of
end;

Danke, sehr freundlich! Allerdings ändert da nicht viel. Er tauscht zwar wieder kurzzeitig die Page, springt dann jedoch wieder zurück behält aber die alte Caption!
Also geh ich mal davon aus, das es an der PageControl liegt, allerdings ist da das einzige Ereigniss:

Delphi-Quellcode:
Active Page Index = TabSheet1
Ich hab auch mal die Reihenfolge der Items des TreeViews geändert bringt aber auch nichts, springt immer wieder auf die selbe Seite! (TabSheet2)

Zitat:

Zitat von sx2008
Hast du einen Timer auf dem Form ?

Ja, sogar 3 Stück, die haben aber nichts mit der TreeView bzw PageControl zu tun!

BullsEye 24. Aug 2008 13:29

Re: PageControl spring automatisch um!
 
Das Problem ist immernoch nicht gelöst !?

Irgendwie such ich nun schon die ganze Zeit nach dem Fehler, ich finde ihn aber gar nicht. Nicht einmal einen Hinweis darauf!

napsterxx 24. Aug 2008 13:50

Re: PageControl spring automatisch um!
 
Für was die Case-Abfrage?
Delphi-Quellcode:
PageControl1.ActivePageIndex := TreeView1.Selected.Index;
Mehr Code wäre sicherlich hilfreich.

sx2008 24. Aug 2008 13:59

Re: PageControl spring automatisch um!
 
Zitat:

Zitat von BullsEye
...Er tauscht zwar wieder kurzzeitig die Page, springt dann jedoch wieder zurück...
Timer...sogar 3 Stück, die haben aber nichts mit der TreeView bzw PageControl zu tun!

Aha, und das Verhalten soll also nix mit den Timern zu tun haben, obwohl eindeutig eine Verzögerung sichtbar ist?
Mach eine Sicherheitskopie von deinem Formular und dann wähle der Reihe nach alle 3 Timer an.
Dann im Objektinspektor das Event OnTimer löschen.
Also nicht den Sourcecode zum Event, sondern nur das Property OnTimer.
So müsste sich feststellen lassen, welcher Timer für das Problem verantwortlich ist.

BullsEye 24. Aug 2008 14:10

Re: PageControl spring automatisch um!
 
Ich hab den Fehler gefunden.

Irgendwie doof! Also ich hatte folgenden Code:

Delphi-Quellcode:
IF CheckBox6.Checked THEN
BEGIN

   Label10.Show;
END ELSE
BEGIN
   Label10.Hide;
END;
und Label10 ist halt auf Tabsheet2. Deshalb ist er da immer hingesprungen. Richtig muss der Code so lauten:

Delphi-Quellcode:
IF CheckBox6.Checked THEN
BEGIN

   Label10.Visible := true;
END ELSE
BEGIN
   Label10.Visible := false;
END;
Danke euch allen trotzdem für die Hilfe!

Apollonius 24. Aug 2008 14:26

Re: PageControl spring automatisch um!
 
Wieso nicht gleich Label10.Visible := Checkbox6.Checked?

BullsEye 24. Aug 2008 14:32

Re: PageControl spring automatisch um!
 
Zitat:

Zitat von Apollonius
Wieso nicht gleich Label10.Visible := Checkbox6.Checked?

Aus dem Grunde, das da noch mehr druf liegt, also nur das Label Visible.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:25 Uhr.

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