AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi PageControl: Änderung Tabsheet-Inhalt ohne Sprung dorthin?

PageControl: Änderung Tabsheet-Inhalt ohne Sprung dorthin?

Ein Thema von triangulum · begonnen am 14. Aug 2006 · letzter Beitrag vom 15. Aug 2006
Antwort Antwort
triangulum

Registriert seit: 21. Jul 2006
39 Beiträge
 
Delphi 7 Professional
 
#1

PageControl: Änderung Tabsheet-Inhalt ohne Sprung dorthin?

  Alt 14. Aug 2006, 17:02
Salü,

Anwendung hat PageControl mit 8 TabSheets.

Wenn nun in TabSheet1 ein Button geklickt wird, löst das Ereignis eine Contentänderung im TabSheet5 aus. Ein Frame wird TabSheet5 hinzuugefügt und angezeigt.

Nun wird dann aufgrund dieser Änderung auch TabSheet5 angezeigt, und nicht TabSheet1.

Wenn man am Ende des Eventhandler eingibt
PageControl1.ActivePageIndex := 0; kehrt er zwar zu TabSheet1 zurück, aber ein unschönes Flimmern ist noch zu sehen (da der Sprung dorthin ja stattfand, nur sofort Rückkehr).

Wie kann man einstellen, dass die Änderung des Inhalts von TabSheet5 vollkommen im Hintergrun verläuft, und wir bei TabSheet1 stehenbleiben? TabSheet5 nur dann sehen, wenn wir draufklicken?
Multa narrare possum, sed longum est ....
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: PageControl: Änderung Tabsheet-Inhalt ohne Sprung dorthi

  Alt 14. Aug 2006, 17:06
Wie greifst du auf die Elemente des anderen Tabsheets zu?
Markus Kinzler
  Mit Zitat antworten Zitat
triangulum

Registriert seit: 21. Jul 2006
39 Beiträge
 
Delphi 7 Professional
 
#3

Re: PageControl: Änderung Tabsheet-Inhalt ohne Sprung dorthi

  Alt 14. Aug 2006, 17:23
Jedes TabSheet enthält einen Frame. Alle Elemente sind in dem jeweiligen Frame zusammengefasst.

Die Frames sind in getrennten Dateien gespeichert. Anfangs werden sie den jew. TabSheets zugewiesen
Delphi-Quellcode:
Application.CreateForm(TSigmaPFrame, SigmaPFrame);
SigmaPFrame.Parent := TabSheet4;
CreatedFrames[3] := true;
später können sich jedoch Komponenten der Frames dynamisch ändern (direkt durch Programmcode).

Dann will ich nicht, dass er, wenn ich auf TabSheet1 bin und Komponenten im TabSheet5 sich ändern, automatisch im PageControl das TabSheet5 auswählt. Er soll die Änderung im Hintergrund ausführen und mich auf TabSheet1 lassen.
Multa narrare possum, sed longum est ....
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: PageControl: Änderung Tabsheet-Inhalt ohne Sprung dorthi

  Alt 14. Aug 2006, 17:26
Nein ich meine im Eventhandler.
Markus Kinzler
  Mit Zitat antworten Zitat
triangulum

Registriert seit: 21. Jul 2006
39 Beiträge
 
Delphi 7 Professional
 
#5

Re: PageControl: Änderung Tabsheet-Inhalt ohne Sprung dorthi

  Alt 14. Aug 2006, 17:44
Delphi-Quellcode:
Procedure TCalculationFrame.CalcButtonAltClick(Sender: TObject);
begin

<bla bla>

  HauptF.ShowFrame5(self);
  HauptF.PageControl1.ActivePageIndex := 0
end;
CalculationFrame "klebt" auf TabSheet1, Frame5 auf TabSheet5.

Der CalcButton befindet sich auf CalculationFrame. Die Änderung durch ShowFrame5 betrifft dann Frame5.
Delphi-Quellcode:
Procedure THauptF.ShowFrame5(Sender: TObject);
Begin
 Frame5.FormCreate(Sender);
 StatusHistory;
 Frame5.Show;
End;
Multa narrare possum, sed longum est ....
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#6

Re: PageControl: Änderung Tabsheet-Inhalt ohne Sprung dorthi

  Alt 14. Aug 2006, 17:48
Ich kann nicht wirklich helfen; aber vielleicht habe ich eine passende Idee, sodass ein Fachmann die Suche an der richtigen Stelle startet:

Bei Datenbank-Controls gibt es DisableControls/EnableControls, damit genau so ein Flackern verhindert wird.

Unter NET gibt es für alle WinControls die Methoden SuspendLayout/ResumeLayout.

Ich dachte, dass mit Invalidate dies ebenfalls erreicht werden könnte. Aber das ist wohl zu einfach gedacht.

Vielleicht bringen Euch diese Gedanken weiter. Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#7

Re: PageControl: Änderung Tabsheet-Inhalt ohne Sprung dorthi

  Alt 14. Aug 2006, 18:41
Hallo triangulum,

bei zur Laufzeit erstellten Komponenten ist der Aufruf der Methode Show in der Regel überflüssig. Vielleicht hilft es auch hier, auf diesen Aufruf zu verzichten.

Gruß Hawkeye
  Mit Zitat antworten Zitat
raiguen
(Gast)

n/a Beiträge
 
#8

Re: PageControl: Änderung Tabsheet-Inhalt ohne Sprung dorthi

  Alt 15. Aug 2006, 10:24
Zitat von Hawkeye219:
...
bei zur Laufzeit erstellten Komponenten ist der Aufruf der Methode Show in der Regel überflüssig. Vielleicht hilft es auch hier, auf diesen Aufruf zu verzichten...
Genau das ist der 'Knackpunkt'

Zitat von triangulum:
Delphi-Quellcode:
Procedure TCalculationFrame.CalcButtonAltClick(Sender: TObject);
begin
<bla bla>
  HauptF.ShowFrame5(self); //aufruf zur Erstellung des Frames IST OKAY
  HauptF.PageControl1.ActivePageIndex := 0
end;
CalculationFrame "klebt" auf TabSheet1, Frame5 auf TabSheet5.

Der CalcButton befindet sich auf CalculationFrame. Die Änderung durch ShowFrame5 betrifft dann Frame5.
Delphi-Quellcode:
Procedure THauptF.ShowFrame5(Sender: TObject);
Begin
 Frame5.FormCreate(Sender);
 StatusHistory;
 Frame5.Show; //<<---- DAS bringt dir sofort den Tab5 in Vordergrund!!
End;
Schmeiß die Zeile Frame5.Show raus und schon wird im Stillen bzw Hintergrund der Frame erstellt
  Mit Zitat antworten Zitat
triangulum

Registriert seit: 21. Jul 2006
39 Beiträge
 
Delphi 7 Professional
 
#9

Re: PageControl: Änderung Tabsheet-Inhalt ohne Sprung dorthi

  Alt 15. Aug 2006, 11:29
jou dank an alle, es war tatsächlich Show ...
Multa narrare possum, sed longum est ....
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:37 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