![]() |
pagecontrol
hallo alle
ich habe momentan ein problem damit herauszufinden welches Memo gerade im vordergrund ist. es ist so: ich habe ein pagecontrol mit seiten die auf button-click erzeugt werden. es wird bei jedem klick eine page mit einem memo drin erzeugt. wenn ich im obenliegendem ComboBox etwas eingebe soll es nach "enter-eingabe" genau so im memo landen. aber das problem: ich kann bisher dann nur sowas machen:
Delphi-Quellcode:
wie kann ich das etwas dynamischer gestalten?if key = char(vk_return)then begin key := #0; if ComboBox1.Text <> '' then begin Memo1.Lines.Text := Edit1.Text; // hier ist es if ComboBox1.Items.IndexOf(ComboBox1.Text) = -1 then ComboBox1.Items.Add(ComboBox1.Text); end; end; dass dort nicht "memo1" sondern jenes memo steht welches gerade mit dem tabsheet im vordergrund ist? die memos haben keine "namen" sondernich identifiziere sie an einer inkremierenden integer-zahl. |
Re: pagecontrol
Mhm warum machst du nicht sowas wie:
onPageChange ... if ActivePage = Page1 then fActiveMemo := Memo1; if .... zu billig ? *G* geht auch komplizierter ... (PseudoCode) function SearchMemo(wc:TComponent) : TMemo; var i : integer; begin result := nil; for i:=0 to wc.componentcount - 1 do begin if wc.components[i] is TMemo then begin result := TMemo(wc.components[i]); exit; end else if wc.components[i].componentcount > 0 then begin result := SearchMemo(wc.components[i]); if result <> nil then exit; end; end; end; OnComboKeyPress ... var mm : TMemo; if key = #13 then begin mm := SearchMemo(PageControl1.ActivePage); if assigned(mm) then with mm do begin mm.lines.text := mm.lines.text + 'Lustisch zeugs'; end; end; es geht auch noch anders ... var mm:array[1..3]of Tmemo; OnFormCreate mm[1] := Memo1; mm[2] := memo2; mm[3] := memo3; PageControl1Page1.Tag := 1; PageControl1Page1.Tag := 2; PageControl1Page1.Tag := 3; .... (könnte man auch über eine collection lösen ich weis) und später dann einfach: OnKey.... mm[PageControl1.ActivePage.Tag].Lines.add('Noch lustischers Zeugs'); gruss cyb. |
Re: pagecontrol
das mit dem "if" ist nicht gut, da ich ja im vorhinein nicht weis wieviele tabshets ich erzeugen werden.
wie wende ich denn
Delphi-Quellcode:
an?
function SearchMemo(wc:TComponent) : TMemo;
var i : integer; begin result := nil; for i:=0 to wc.componentcount - 1 do begin if wc.components[i] is TMemo then begin result := TMemo(wc.components[i]); exit; end else if wc.components[i].componentcount > 0 then begin result := SearchMemo(wc.components[i]); if result <> nil then exit; end; end; end; |
Re: pagecontrol
keine antworten mehr ?
|
Re: pagecontrol
steht doch da:
Delphi-Quellcode:
Dann steht in mm dein aktuelles Memo.
mm := SearchMemo(PageControl1.ActivePage);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:11 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