AGB  ·  Datenschutz  ·  Impressum  







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

mit create erstelltes Panel steuern

Ein Thema von XXcD · begonnen am 30. Dez 2007 · letzter Beitrag vom 31. Dez 2007
Antwort Antwort
Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#1

mit create erstelltes Panel steuern

  Alt 30. Dez 2007, 13:04
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;
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#2

Re: mit create erstelltes Panel steuern

  Alt 30. Dez 2007, 13:13
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:
(Panel2.Parent as TPanel).bla
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#3

Re: mit create erstelltes Panel steuern

  Alt 30. Dez 2007, 13:25
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;
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: mit create erstelltes Panel steuern

  Alt 30. Dez 2007, 13:31
Ich sehe kein Speicherleck. Die Komponenten werden freigegeben, da du beim Create eine andere Komponente als Parameter angibst, den Owner.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#5

Re: mit create erstelltes Panel steuern

  Alt 30. Dez 2007, 18:59
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.
Angehängte Grafiken
Dateityp: bmp neu_bitmap__2__211.bmp (464,7 KB, 13x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#6

Re: mit create erstelltes Panel steuern

  Alt 31. Dez 2007, 10:48
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:
Panelkommplett.name:='Panelkommplett'+i;
Panelheader.caption:='Panelkommplett'+i;
Jetzt müsste ich später Panelheader.caption verwenden um autosize festzulegen aber wie soll das gehen??
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#7

Re: mit create erstelltes Panel steuern

  Alt 31. Dez 2007, 10:58
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.
  Mit Zitat antworten Zitat
Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#8

Re: mit create erstelltes Panel steuern

  Alt 31. Dez 2007, 11:04
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 http://www.delphipraxis.net/internal...t.php?p=783771
  Mit Zitat antworten Zitat
Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#9

Re: mit create erstelltes Panel steuern

  Alt 31. Dez 2007, 13:10
Hab alles gelöst

Delphi-Quellcode:
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;
War eigentlich nicht schwer man muss nur wissen wie es geht.
Und ihr habt mir wirklich weitergeholfen Und einen guten Rutsch ins neue jahr


Jetzt muss ich nur noch rausbekommen wie ich alle Tops der anderen Panels um 50 Pixel verringer.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.549 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: mit create erstelltes Panel steuern

  Alt 31. Dez 2007, 13:12
Falsch:
Zitat:
if (Components[i] as TPanel).Name = 'Panel6then begin
Richtig:if (ScrollBox1.Components[i] as TPanel).Name = 'Panel6then begin [edit] *Grmpf* wird das einfach wegeditiert [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  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 06:58 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