![]() |
mit create erstelltes Panel steuern
Hallo,
ich erstelle ein Panel(Panel2) in einem Panel(Panel1). Jetzt müsste ich wenn ich auf Panel2 klicke, Panel1 autosize auf false setzen und height auf 19. Wie kann ich das am besten anstellen. Hier noch der code von den Panels:
Delphi-Quellcode:
for j := 0 to FResult.RowsCount - 2 do
begin Panel1:=TPanel.Create(Scrollbox1); Panel1.Parent := ScrollBox1; Panel1.Left := 5; Panel1.Height := 59; Panel1.Width := 362; Panel1.Top := aTop; Panel1.Caption:=''; Panel1.AutoSize:=true; Panel1.Color:=clblack; Panel1.Color:=clblack; Panel2:=TPanel.Create(Panel1); Panel2.Parent := Panel1; Panel2.Left := 0; Panel2.Height := 17; Panel2.Width := 359; Panel2.Top := 0; Panel2.Caption:=' '+FResult.FieldValuebyname('Title')+' ***geschrieben von '+FResult.FieldValuebyname('from'); Panel2.AutoSize:=false; Panel2.Color:=clblack; Panel2.Alignment:=taLeftJustify; Panel2.OnClick := //Was muss hier hin??? end; |
Re: mit create erstelltes Panel steuern
Dir ist klar das du hier ein Speicherleck hast?
Und du brauchst eben eine Event-Prozedure die du dem OnClick zuweist. Dort kannst du dann Panel1 über das Parent verändern:
Delphi-Quellcode:
(Panel2.Parent as TPanel).bla
|
Re: mit create erstelltes Panel steuern
Hmm ich kriege das irgendwie nicht hin.
Ich müsste das Panel ja über eine externe Prozedure steuern. Da ist ja dann nicht mehr Panel2.Parent definiert:
Delphi-Quellcode:
procedure TForm1.Newsausfahren(Sender: TObject);
begin if (Panel2.Parent as TPanel).AutoSize=true then begin (Panel2.Parent as TPanel).Autosize:=false; (Panel2.Parent as TPanel).Height:=19; end else begin (Panel2.Parent as TPanel).Autosize:=true; end; end; |
Re: mit create erstelltes Panel steuern
Ich sehe kein Speicherleck. Die Komponenten werden freigegeben, da du beim Create eine andere Komponente als Parameter angibst, den Owner.
|
Re: mit create erstelltes Panel steuern
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe jetzt nochmal nachgedacht wie ich das am besten erklären könnte.
Also ich gebe dem Erstellten Panel die Prozedur Newsausfahren. Wenn man darauf klickt müssen alle Panels und dem Panel verkleinert werden. Ich stell mal ein Screen davon rein wie das jetzt aussieht. |
Re: mit create erstelltes Panel steuern
Ich glaube ich wüßte wie ich das machen kann.
Wenn ich den Panelnamen z.b. als Caption angebe wie kann ich dann für den Panelnamen autsize und height angeben? Also z.b.
Delphi-Quellcode:
Jetzt müsste ich später Panelheader.caption verwenden um autosize festzulegen aber wie soll das gehen??
Panelkommplett.name:='Panelkommplett'+i;
Panelheader.caption:='Panelkommplett'+i; |
Re: mit create erstelltes Panel steuern
Würde es sich nicht mehr anbieten, einen TWebBrowser einzubinden und solche Sachen per HTML zu machen? Oder eine Komponente, die HTML verarbeiten und anzeigen kann.
Ansonsten würde ich einmal eine Komponente schreiben, die das macht, was Du willst und dann diese immer wieder erzeugen und nicht mit mehreren Panels arbeiten. |
Re: mit create erstelltes Panel steuern
Hmmm kann man denn HTML datein local erzeugen und nutzen??
Edit: Ich glaube ich habe hier was gefunden, was nen wenig daran kommt was ich brauche ![]() |
Re: mit create erstelltes Panel steuern
Hab alles gelöst :-)
Delphi-Quellcode:
War eigentlich nicht schwer man muss nur wissen wie es geht.
procedure TForm1.GetObjectByName(Sender: TObject);
var i: Integer; begin for i := ScrollBox1.ComponentCount - 1 downto 0 do begin if Scrollbox1.Components[i] is TPanel then if TPanel(Scrollbox1.Components[i]).Name = (Sender as TPanel).Parent.Name then begin if TPanel(Scrollbox1.Components[i]).AutoSize = false then begin TPanel(Scrollbox1.Components[i]).AutoSize:=true; end else begin TPanel(Scrollbox1.Components[i]).AutoSize:=false; TPanel(Scrollbox1.Components[i]).Height:=17; end; end; end; end; Und ihr habt mir wirklich weitergeholfen :-D :-D :-D Und einen guten Rutsch ins neue jahr Jetzt muss ich nur noch rausbekommen wie ich alle Tops der anderen Panels um 50 Pixel verringer. |
Re: mit create erstelltes Panel steuern
Falsch:
Zitat:
Delphi-Quellcode:
[edit] *Grmpf* wird das einfach wegeditiert ;) [/edit]
if (ScrollBox1.Components[i] as TPanel).Name = 'Panel6' then begin
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:18 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