![]() |
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 |
Re: MDI-Anwendung und Panel
Versuchs mal damit:
Hab ich mit einem Timer gemacht, nachdem die Childs angezeigt wurden.
Delphi-Quellcode:
Panel1.SendToBack;
|
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 :) |
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. |
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. |
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: |
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 |
Re: MDI-Anwendung und Panel
nur auf der nicht verdeckten fläche
|
Re: MDI-Anwendung und Panel
Da brauchts kein Panel
Einfach auf die Fläche der Canvas von der Hauptform zeichnen
Delphi-Quellcode:
Edit: Auf Panels zu zeichnen ist ohnehin umständlicher.
// Beispiel
procedure TMDIForm1.OnPaint; begin Canvas.Draw(0, 0, MeinBitmap); // Bitmap mußt Du natürlich erst erstellen und eins laden end; |
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... |
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. |
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
|
Re: MDI-Anwendung und Panel
versuch ma en eigenes Panel zu machen und von TGraphicControl abzuleiten ;)
|
Re: MDI-Anwendung und Panel
Zitat:
|
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: |
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:
Dann müssen aber die Childs selbst verwaltet werden...
ChildForm1.Parent:=MainForm1;
Am meisten nervt ja, das Windows sagt, Befehl ausgeführt, sonst könnte man vielleicht vom Fehlercode her an eine Lösung kommen. |
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 |
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: |
Re: MDI-Anwendung und Panel
Zitat:
Zitat:
: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. |
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 |
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 |
Re: MDI-Anwendung und Panel
Zitat:
|
Re: MDI-Anwendung und Panel
Jupp, und das einfach mit:
Delphi-Quellcode:
... und fertig.
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; |
Re: MDI-Anwendung und Panel
Zitat:
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. :( |
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 ;)
|
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. |
Re: MDI-Anwendung und Panel
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:03 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