AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

PageControl, Child-Controls verschwinden ...

Ein Thema von MathiasSimmack · begonnen am 29. Aug 2002 · letzter Beitrag vom 29. Aug 2002
Antwort Antwort
MathiasSimmack
(Gast)

n/a Beiträge
 
#1

PageControl, Child-Controls verschwinden ...

  Alt 29. Aug 2002, 06:49
... beim Resizen der Form.

Hallo Leute.

Ich habe zwei PageControls. In einem steckt ein TTreeView, im anderen ein Memo/RichEdit. Wenn ich die Form verschiebe, ist alles okay. Sobald ich sie aber vergrößere, verkleinere oder maximiere, sind die Controls verschwunden, und ich sehe nur noch die scheinbar leeren Tabsheet-Seiten.
Ist aber noch alles da, denn die Knotenpunkt des TTreeView sind noch erkennbar, und beim Aufklappen "restauriert" sich das Control dann auch, und sobald ich einen Eintrag auswähle, erscheint im Memo/RichEdit auch der entsprechende Text.

Ich hab´s versucht mit Application.ProcessMessages, und mit "Update"-Aufrufen der PageControls, der aktiven Seiten und der Child-Controls (nacheinander, nie zusammen!)

Gebracht hat´s nichts.
Weiß jemand, was das für eine Merkwürdigkeit ist und welche Ursache sie hat?

Gruß,
Mathias.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 29. Aug 2002, 08:12
Gib doch mal einen Einblick in die Definition der Klasse des Forms. Es hört sich durchaus ein wenig seltsam an. Hast Du irgendwelche Ereignisse oder Nachichten abgefangen und vielleicht "verschluckt"?

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#3
  Alt 29. Aug 2002, 09:22
Nee, da sind keine besonderen Nachrichten, sakura.

Ich habe einfach nur das PageControl auf die Form gepackt, eine Seite angelegt und einen TreeView reingehauen. Das war´s. Nur das andere PageControl legt die Seiten dynamisch an. Eine wird beim Start wie folgt erstellt:
Code:
  // create 1st page
  ntab                     := TTabSheet.Create(PageControl1);
  ntab.Visible             := true;
  ntab.Caption             := 'Testseite';
  ntab.PageControl         := PageControl1;
  PageControl1.ActivePage  := ntab;

  nrich                    := TRichEdit.Create(ntab);
  nrich.Parent             := ntab;
  nrich.Align              := alClient;
  nrich.Visible            := true;
  nrich.PlainText          := true;
  nrich.Font.Name          := 'Courier New';
  nrich.Font.Size          := 10;
  nrich.ScrollBars         := ssBoth;
Ich hätt´s u.U. ja auch auf darauf geschoben, dass ich beim dynamischen Anlegen der Seiten was falsch gemacht habe. Wenn aber nicht mal das oben erwähnte, normal erstellte und immer vorhandene PageControl/TreeView funktioniert ...

Ich werde mal schauen, ob das was mit dem XP-Patch der "ComCtrl.pas" zu tun hat. Du weißt schon, da gab´s doch diese Änderungen für die TListView, damit´s unter XP funktioniert. Ich kann mich zwar nicht entsinnen, irgendwas am PageControl geändert zu haben, aber das ist auch schon ´ne Weile her. Möglich, dass ein vermeintlicher XP-Patch dieses Problem verursacht.

<Edit>
Tatsächlich! Da stecken sie:
Code:
procedure TTabSheet.UpdateTabShowing;
begin
  SetTabShowing((FPageControl <> nil) and FTabVisible);

// WinXP patch
  SetWindowLong(handle,GWL_EXSTYLE,WS_EX_TRANSPARENT);
end;

procedure TPageControl.Loaded;
var
  i : integer;
begin
  inherited Loaded;
  UpdateTabHighlights;

// WinXP patch
  for I:=self.PageCount-1 downto 0 do
        self.ActivePage:=self.Pages[I];
end;
Dass ich mich daran nicht mehr erinnern konnte, gibt mir zu denken ... ... Na egal. Wenn ich diese Patches auskommentiere, tritt das Verschwinden der Child-Controls nicht mehr auf.

Aber irgendeinen Sinn müssen die Änderungen doch gehabt haben, denn grundlos schreibe ich doch nicht Web-Tipps in meine Units rein. Ich hab das Programm gerade mal unter XP mit aktivem LUNA probiert. Probleme gab´s aber nicht. Hm ...
</Edit>
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 29. Aug 2002, 14:07
Hast Du nur mal einen von den beiden "auskommentiert" - welcher verursacht das Problem

.....
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#5
  Alt 29. Aug 2002, 17:08
Allem Anschein nach ist es der erste Patch mit der "SetWindowLong"-Anweisung. In der technischen Beschreibung aus Delphi3000.com heißt es dazu:
Zitat:
You know PageControl is a container for TTabSheet controls: the first one seems to well accept new Windows XP themes, but this remains true until you add a TabSheet. And PageControls are useless without TabSheets...
Ich bin gerade im Win98. Ich werde die Sache nachher noch mal unter XP testen. Ich brauche ja bloß Parameter angeben. Für jeden legt das Programm eine neue Registerseite an und lädt den Parameter (= die Datei). Dann sehe ich ja, ob doch vielleicht irgendwo ein Problem lauert.

Der zweite Patch verursacht auf den ersten Blick erst mal nicht dieses Problem. Ich denke mal, mit Delphi 7 dürften solche User-Fixes ohnehin der Vergangenheit angehören. Immerhin wirbt Borland ja mit der kompletten Unterstützung der XP-Themes.
  Mit Zitat antworten Zitat
Antwort Antwort


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 13: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