![]() |
[Gelöst] PageControl Focus
Hallo,
ich weiß nicht, ob mein Problem schon irgendwo behandelt wurde, da ich nicht genau weiß, wonach ich suchen muss. Zum Problem: Ich habe 2 PageControls, in denen jeweils eine Variable Anzahl an Tabs mit jeweils einem Memo vorhanden ist. Nun möchte ich feststellen innerhalb welches PageControls ich mich befinde. Soll heißen, dass wenn ich in einem Memo in Tab 3 irgendwas schreibe, woher ich dann weiß, in welchem der beiden PageControls ich mich befinde. Ziel des ganzen soll sein, über einen Button außerhalb der PageControls den jeweils aktiven Tab zu schließen. Danke schonmal für eure Antworten |
Re: PageControl Focus
Das Problem ist, das Du das nicht mehr weisst, sobald du den Button klickst, weil dann der Fokus ja auf den Button übergegangen ist. Daher musst Du Dir vorher merken, in welchem Memo Du zuletzt etwas eingegeben bzw. draufgeklickt hast. Dazu dient das 'OnEnter'-Ereignis des jeweiligen Memos.
So, da Du nun weisst, welches Memo zuletzt 'aktiv' war, kannst du ja sein 'Parent' herausfinden. Das dürfte ein TTabSheet sein. Und dieses Tabsheet gehört ja zu einer der beiden PageControls. |
Re: PageControl Focus
Ich kann aber, wenn ich bevor ich den Button drücke auf einen Tab klicke, ein neuen Tab in dem jeweiligen PageControl erzeugen.
Also innerhalb der Button procedure kann ich mit if und PageControl1.Focused beide schon unterscheiden. Es müsste also auch so gehen. Eigentlich müsste ich noch "nur" herausfinden, ob das PageControl selbst (funktioniert ja schon) oder ein Child den Fokus hat. Das mit dem Child bekomm ich aber nicht hin. |
Re: PageControl Focus
Hallo
Aktives Control ermitteln:
Delphi-Quellcode:
Falls sich bei diesem nicht um ein TPageControl handelt (und <> nil ist) mit
Screen.ActiveControl
.Parent das Parent Control ermitteln:
Delphi-Quellcode:
Screen.ActiveControl.Parent
|
Re: PageControl Focus
Super, danke für den Hinweis.
Habe es jetzt nur mit Form1.ActiveControl gelöst, hat aber genau den gewünschten Effekt. |
Re: PageControl Focus
Zitat:
|
Re: [Gelöst] PageControl Focus
Ok, habe es weg gelassen.
Jetzt habe ich aber noch ein weiteres verwandtes Problem. Wie kann ich nun ein Memo auf so einem Tabsheet kontrollieren, wenn z.b. nur der Tab oben angeklickt ist. Also sowas in der Art wie:
Delphi-Quellcode:
memo := (ActiveControl.Child as TMemo);
|
Re: [Gelöst] PageControl Focus
Zitat:
Wenn auf jedem TabSheet immer nur das Gleiche drauf ist (ein TMemo), dann kann man doch auch nur ein Memo in Verbindung mit einer ListBox einsetzen. (Listbox links; Memo rechts daneben) Der Benutzer klickt auf einen Eintrag in der Listbox und das Programm ändert daraufhin den Inhalt des Memo. Natürlich müssen dann alle Texte irgendwo getrennt gespeichert werden. (z.B. in TListbox.Objects[]) Zu deiner Frage: du musst das Memo im Controls[]-Array suchen
Delphi-Quellcode:
function FindMemo(parent:Tcontrol):TMemo;
var i : integer; begin for i := 0 to parent.ControlCount-1 do begin if parent.Controls[i] is TMemo then begin result := TMemo(parent.Controls[i]); Exit; end; end; result := nil; // nix gefunden end; |
Re: [Gelöst] PageControl Focus
Zitat:
|
Re: [Gelöst] PageControl Focus
was ich schreiben möchte, ist ein 2 geteilter editor, bei dem man in jedem teil nochmal beliebig viele tabs öffnen kann.
deswegen hab ich mich für ein pagecontrol entschieden, da ich es nicht so gut fänd, wenn ich alles zwischenspeichern müsste. also werde ich es mal mit dem obigen codestück versuchen. danke für eure antworten |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:50 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