AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Panel im Hintergrund

Ein Thema von machstuhl · begonnen am 6. Jan 2014 · letzter Beitrag vom 6. Jan 2014
Antwort Antwort
machstuhl

Registriert seit: 17. Jul 2012
40 Beiträge
 
#1

Panel im Hintergrund

  Alt 6. Jan 2014, 13:39
Hallo,
ich habe schon einige Zeit im Internet mit Suchen verbracht, aber leider nichts passendes gefunden.

Ich erstelle ein Panel inkl. TImage zur Laufzeit. Sobald dieses Panel erstellt wird, liegt es allerdings unter den zur Designzeit platzierten Editfeldern.

Das Panel wird nach den Edits erstellt (da es ja zur Laufzeit erstellt wird), "BringToFront" und "in den Hintergrund setzen" bringen nichts.

Mir ist klar das ein TGraphicControl immer hinter einem TWinControl liegt, allerdings erstelle ich mit TPanel ja ein TWinControl. Wo liegt hier mein Fehler?

Danke im vorraus
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli
Online

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
3.696 Beiträge
 
Delphi XE3 Ultimate
 
#2

AW: Panel im Hintergrund

  Alt 6. Jan 2014, 13:57
Ich könnte mir nur vorstellen, dass beide nicht die gleichen Parents haben.
Evtl. liegen Deine Edits direkt auf dem Formular und Dein nachträglich erzeugtes Panel auf einem anderen Control (TabItem oder so)?

Oder hast Du irgendwo doch ein SendToBack, das Du übersehen hast?
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
4.916 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Panel im Hintergrund

  Alt 6. Jan 2014, 14:06
Was wäre mit TWinControl.SetZOrder?
  Mit Zitat antworten Zitat
machstuhl

Registriert seit: 17. Jul 2012
40 Beiträge
 
#4

AW: Panel im Hintergrund

  Alt 6. Jan 2014, 14:13
Ich könnte mir nur vorstellen, dass beide nicht die gleichen Parents haben.
Evtl. liegen Deine Edits direkt auf dem Formular und Dein nachträglich erzeugtes Panel auf einem anderen Control (TabItem oder so)?
So ist es. Ich kann als Parent allerdings nicht das Formular angeben. Dann erhalte ich eine Exception.
Aber danke für den Tipp. Bringt mich hoffentlich weiter
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

AW: Panel im Hintergrund

  Alt 6. Jan 2014, 14:21
Dashier überdeckt (unter Delphi 7) bei mir alles im Formular, was sich im Bereich des Panels befindet.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
 pn : TPanel;
 im : TImage;
begin
 pn := TPanel.Create(self);
 pn.Color := clGreen;
 pn.Width := 1000;
 pn.Height := 400;
 pn.Left := 100;
 pn.Top := 100;
 pn.Parent := Self;
 im := TImage.Create(Self);
 im.Top := 4;
 im.Left := 4;
 im.Height := pn.Height - 8;
 im.Width := pn.Width - 8;
 im.Parent := pn;
 im.Canvas.FloodFill(0,0,clRed,fsBorder);
end;
Als Ergebnis habe ich einen grünen Rahmen um ein Image.

Wo und wann erhältst Du denn welche Exception?

Zeig' doch bitte mal Deinen Quelltext, dann brauchen wir nicht so zu .
  Mit Zitat antworten Zitat
machstuhl

Registriert seit: 17. Jul 2012
40 Beiträge
 
#6

AW: Panel im Hintergrund

  Alt 6. Jan 2014, 14:54
Der ist ein bisschen kompliziert. Aber ich versuchs mal.

So erstelle ich das Panel. Diese Prozedur befindet sich in meiner MDI-Form und soll in diversen Childs aufgerufen werden.
Delphi-Quellcode:
procedure Tfm_haupt.image_status_erstellen(myTop, myLeft : Integer; Besitzer: TComponent; Vater: TWinControl);
Var
  PNL : TPanel;
begin
  PNL := TPanel.create(Besitzer);
  PNL.top := myTop;
  PNL.left := myLeft;
  PNL.Height := 256;
  PNL.Width := 256;
  PNL.Name := 'pnl_status';
  PNL.Parent := Vater;
  PNL.BevelOuter := bvNone;
  PNL.Visible := true;
  PNL.Caption := 'TESTTESTETESTSTSET';
end
Im Child (fm_personen) habe ich folgenden Code:
Delphi-Quellcode:
procedure Tfm_personen.Button1Click(Sender: TObject);
VAR PNL : TPanel;
begin
  fm_haupt.image_status_erstellen(50, 25, fm_personen, pnl_Inhalt);
  PNL := pnl_inhalt.FindChildControl('pnl_status') as TPanel;
end;
Das interessante ist: Die MDI-Children werden alle von einem Formular (Tfm_vorlage) abgeleitet, welches ein pnl_Inhalt mit align := alClient beinhaltet.

Wenn ich was anderes als "pnl_Inhalt" als Parent übergebe (bspw. self, fm_personen oder fm_vorlage), erhalte ich exceptions beim erstellen.

Mir ist mittlerweile klar, dass die Editfelder das Panel überlagern, da die Parents nicht übereinstimmen. Allerdings kann ich auch nix anderes als Parent angeben.


edit: wenn ich self übergebe, geht es doch. hatte noch ne ehemals auskommentierte zeile vergessen.

Geändert von machstuhl ( 6. Jan 2014 um 15:03 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 21:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf