Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi MDI-Anwendung und Panel (https://www.delphipraxis.net/77593-mdi-anwendung-und-panel.html)

RobertDorn 21. Sep 2006 16:54


MDI-Anwendung und Panel
 
Hallo!

Habe ne MDI-Anwendung. Im MDI-Hauptformular gibs ja so nen Bereich in dem die MDI-Child-Fenster angezeigt werden.
Würde aber nun gerne zb. ein Panel in dem Bereich noch mit darstellen. Das sollte aber im Hintergrund sein und kein MDI-Child-Fenster überdecken. Bekomms aber einfach nicht hin dass es im Hintergrund ist :?

Hat jemand viellei nen Tipp wie ich das hinbekommen könnte??

Gruß,
Robert

Sunlight7 21. Sep 2006 17:07

Re: MDI-Anwendung und Panel
 
Versuchs mal damit:

Hab ich mit einem Timer gemacht, nachdem die Childs angezeigt wurden.

Delphi-Quellcode:
Panel1.SendToBack;

RobertDorn 21. Sep 2006 17:13

Re: MDI-Anwendung und Panel
 
genau das hatte ich ja auch schon versucht. aber irgend wie ist dann das panel ganz weg.
verschwindet wohl dabei etwas zu sehr in den hintergrund :)

Sunlight7 21. Sep 2006 17:16

Re: MDI-Anwendung und Panel
 
Ist mir auch gerade aufgefallen...

Ich dachte es sei hinter den Childs, wenn Du die Fenstergröße veränderst ist es wieder plötzlich da... :gruebel:

Komische Sache.

Sunlight7 21. Sep 2006 17:21

Re: MDI-Anwendung und Panel
 
Wo hast Du das Panel, am Rand, oder in der Mitte?

Für Ränder konntest Du "Align" verwenden und die Childs maximieren, dann liegen sie nicht darüber.

RobertDorn 21. Sep 2006 17:25

Re: MDI-Anwendung und Panel
 
nuja... am liebsten hätte ich ja das panel quasi als hintergrund. also align auf Client.
die MDI Childs sollen ja dann nie davon verdeckt werden.

kann man da eigentlich irgend wie auf die Fläche drauf zugreifen in der die MDI-Child-Fenster angezeigt werden?
Gibs dafür viellei ein handle oder irgend was?
Hatte auch scho mal ne MDI Anwendung gesehen die als Hintergrund ne Grafik hatte. Also muss das ja irgend wie gehen...oder? :roteyes:

Sunlight7 21. Sep 2006 17:30

Re: MDI-Anwendung und Panel
 
Du meinst, das die Grafik durch die Childs hindurch sichtbar ist, oder nur auf der nicht verdeckten Fläche?

Edit: Dir frage war nicht gut gestellt.

1. Nur Zeichnen auf der Hauptform
2. Zeichnen auf der Hauptform, soll durch die Childs hindurch sichtbar sein
3. Nur auf die Childs Zeichnen
4. Ganz anders

RobertDorn 21. Sep 2006 17:36

Re: MDI-Anwendung und Panel
 
nur auf der nicht verdeckten fläche

Sunlight7 21. Sep 2006 17:40

Re: MDI-Anwendung und Panel
 
Da brauchts kein Panel

Einfach auf die Fläche der Canvas von der Hauptform zeichnen

Delphi-Quellcode:
// Beispiel
procedure TMDIForm1.OnPaint;
begin
   Canvas.Draw(0, 0, MeinBitmap); // Bitmap mußt Du natürlich erst erstellen und eins laden
end;
Edit: Auf Panels zu zeichnen ist ohnehin umständlicher.

RobertDorn 21. Sep 2006 18:04

Re: MDI-Anwendung und Panel
 
irgend wie klappt das auch net. am bild kanns aber net liegen. habs mal testweise in ner painbox zeichnen lassen. da hatts geklappt

aber auf die canvas fläche vom formula kommt garnix... :(

eigentlich will ich da ja auch net nur ein bild darstellen. aber würde notfalls auch noch gehen...

Sunlight7 21. Sep 2006 18:19

Re: MDI-Anwendung und Panel
 
Das man auf eine MDIForm net zeichnen kann ist mir noch gar net aufgefallen, Sorry, habs voher net probiert.
Aber mal wieder typisch Windows...
Wenn man BitBlt verwendet kommt als Ergebnis "Befehl ausgeführt", aber es wird nix gezeichnet... :|

Was möchtest Du alles haben?
Bitte etwas genauer.

RobertDorn 21. Sep 2006 18:26

Re: MDI-Anwendung und Panel
 
nuja... am liebsten wär mir ja ein panel dass im hintergrund ist. das hat den vorteil das ich ohne großen aufwand noch weiter objekte darauf setzten kann. wie halt zb. ein hintergrundbild

Angel4585 21. Sep 2006 18:33

Re: MDI-Anwendung und Panel
 
versuch ma en eigenes Panel zu machen und von TGraphicControl abzuleiten ;)

Sunlight7 21. Sep 2006 18:38

Re: MDI-Anwendung und Panel
 
Zitat:

Zitat von Angel4585
versuch ma en eigenes Panel zu machen und von TGraphicControl abzuleiten ;)

Das wird nix werden, da nicht mal ein platziertes Label angezeigt wird.

RobertDorn 21. Sep 2006 21:58

Re: MDI-Anwendung und Panel
 
das ist es ja. hab scho ein Timage und ein TPaintbox versucht. wird halt leider auch net angezeigt.
hab mir nun aber fest vorgenommen das irgend wie hinzubekommen.

ne nicht ganz sooo feine lösung wär ja ein mdi child fenster ohne titelleiste und rahmen, und das immer im hintergrund zu halten. allerdings gefällt mir diese lösung net wirklich.
irgend wie muss das auch so gehen :gruebel: :spin:

Sunlight7 22. Sep 2006 16:21

Re: MDI-Anwendung und Panel
 
Ich hab viel probiert...

Das einzige, was so halbwegs hinkommt ist es ohne MDI zu machen und die Childs den Parent der Hauptform zu geben also:

Delphi-Quellcode:
ChildForm1.Parent:=MainForm1;
Dann müssen aber die Childs selbst verwaltet werden...

Am meisten nervt ja, das Windows sagt, Befehl ausgeführt, sonst könnte man vielleicht vom Fehlercode her an eine Lösung kommen.

RobertDorn 23. Sep 2006 01:12

Re: MDI-Anwendung und Panel
 
ohne mdi wollte ich das project ja anfangs mal machen. also nur das parent setzen.
allerdings hatte ich da das problem wenn ich mehrere child fenster hatte, und ich will zwischen denen wechseln in dem ich einfach auf ein anderes klicke (nicht auf die titelleiste!), erscheint es nicht in dem vordergrund (bzw wird glaube auch net aktiv). klappt halt nur wenn ich auf die titelleiste klicke. gut...klar könnt ich beim formular beim OnMouseDown oder so es auch manuell machen. allerdings müsste es dann doch wohl bei jeder Komponennte gemacht werden.

naja.. mal schaun. die MDI lösung gefällt mir sowieso net so 100%ig. alleine scho deswegen weil man MDI Fenster net verstecken/hide'en kann. hab dafür zwar auch ne notlösung gefunden. aber is halt net so ganz die feine art :)
und größenteils verwalte ich meine Child Fenster sowieso scho selbst im Programm.

aber trotzdem vielen dank für deine mühe!!!!!!!!!!!!!!!!!!!!!!! :-D

Sunlight7 23. Sep 2006 02:06

Re: MDI-Anwendung und Panel
 
Bitte gerne...

Noch ein Tip: Du kannst ein Formular erstellen und Deine Childs davon ableiten, dann mußt Du nicht bei jedem das gleiche immer wieder programmieren!

Viel Erfolg :dp:

turboPASCAL 23. Sep 2006 10:09

Re: MDI-Anwendung und Panel
 
Zitat:

Zitat von Sunlight7
Da brauchts kein Panel

Einfach auf die Fläche der Canvas von der Hauptform zeichnen

Delphi-Quellcode:
// Beispiel
procedure TMDIForm1.OnPaint;
begin
   Canvas.Draw(0, 0, MeinBitmap); // Bitmap mußt Du natürlich erst erstellen und eins laden
end;
Edit: Auf Panels zu zeichnen ist ohnehin umständlicher.

Zitat:

Zitat von RobertDorn
irgend wie klappt das auch net. am bild kanns aber net liegen. habs mal testweise in ner painbox zeichnen lassen. da hatts geklappt

aber auf die canvas fläche vom formula kommt garnix... :(

eigentlich will ich da ja auch net nur ein bild darstellen. aber würde notfalls auch noch gehen...


:gruebel: warum soll das nicht funktionieren bei mir klappt das anstandslos.

@RobertDorn, wenn du auf eine Form eh Controls setzen willst würde ich auf MDI verzichten da es wohl mehr "Arbeit" machen wird den Hintergrund neu zu zeichnen bzw. zu "refreschen".


Nimm eine nurmale form und mach dir ein paar Panels verschiebbar.

RobertDorn 23. Sep 2006 11:00

Re: MDI-Anwendung und Panel
 
na ableiten tu ich zur zeit sowieo alles childs von ner "MusterForm" die als vorlage dient. man will sich ja die arbeiten sparen wenn man mal was ändert :)

naja... dann mach ich das nun halt ohne MDI

RobertDorn 23. Sep 2006 11:11

Re: MDI-Anwendung und Panel
 
@TurboPascal (achja.. turbo pascal... das waren noch zeiten *nostalgischwird* *g*)

versteh ich jetzt net ganz? wieso refreshen?

na in der vorgänger version von meinem programm hat ich auch verschiebbare panels als formulare. ging an sich auch gut. aber die lösung gefällt mir inzwischen auch net mehr sooo dolle

Sunlight7 23. Sep 2006 17:26

Re: MDI-Anwendung und Panel
 
Zitat:

Zitat von turboPASCAL
:gruebel: warum soll das nicht funktionieren bei mir klappt das anstandslos.

Du hast erfolgreich auf eine MDIForm gezeichnet?

turboPASCAL 24. Sep 2006 02:43

Re: MDI-Anwendung und Panel
 
Jupp, und das einfach mit:

Delphi-Quellcode:
procedure TForm.FormPaint(Sender: TObject);
begin
  canvas.brush.color := clRed;
  canvas.fillrect(RECT(0, 0, form.width, form.height));
  canvas.draw(
    (form.width div 2) - (MyBitmap.width div 2),
    (form.height div 2) - (MyBitmap.height div 2),
    MyBitmap);
end;

procedure TForm.FormResize(Sender: TObject);
begin
  invalidate; // neu zeichnen lassen
end;
... und fertig.

Sunlight7 24. Sep 2006 18:06

Re: MDI-Anwendung und Panel
 
Zitat:

Zitat von turboPASCAL
Jupp, und das einfach mit:

... und fertig.

Aha, das ist die Lösung des Problems, oder auch nicht...

Wenn Du das echt auf einer MDIForm gemacht hast und es gezeichnet wurde, dann scheint es so, als wäre das ein von Borland hausgemachtes Problem, welches mit Version 6 behoben wurde.

Bei D5 geht das nicht. :(

RobertDorn 24. Sep 2006 18:39

Re: MDI-Anwendung und Panel
 
jab... könnte durchaus sein dass es erst ab D6 geht. so ein mist... aber ich bleibe trotzdem mein D5 treu ;)

Sunlight7 24. Sep 2006 18:52

Re: MDI-Anwendung und Panel
 
@RobertDorn: Ich auch :zwinker:

@turboPASCAL: Hast Du das Problem mit den Panels bei MDI in D6 auch?
Ich brauche es zwar im Moment nicht, aber es würde mich Interessieren.

turboPASCAL 30. Sep 2006 15:37

Re: MDI-Anwendung und Panel
 
Zitat:

Zitat von Sunlight7
@turboPASCAL: Hast Du das Problem mit den Panels bei MDI in D6 auch?
Ich brauche es zwar im Moment nicht, aber es würde mich Interessieren.

Japp.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:35 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