![]() |
TInfoBox - eine InfoBox direkt auf dem Desktop
Liste der Anhänge anzeigen (Anzahl: 2)
Morgen.
Ich stand gerade vor dem Problem: Wie kriege ich eine Reihe von Komponenten auf den Desktop? Nach und nach kam mir die Idee: Warum nicht die Komponenten in ein Panel packen und das mit der WinAPI bearbeiten. Und hier ist mein TDesktopPanel. Es kann in der Entwurfszeit auf einem Formular platziert und mit Komponenten bestückt werden. Zur Laufzeit wandert es dann auf den Desktop und kann mit Left/Top/Width/Height platziert/skaliert werden. Hinweis: Das TDesktopPanel kann NICHT den Fokus erhalten. Ebensowenig alle Komponenten, die darauf sind. Man kann zwar Edits usw. drauftun, nur reinschreiben geht mangels Fokus nicht. Dafür muss man dann eine Form mit BorderStyle=bsNone verwenden. Zwei Bugs sind noch drin: 1. Die Form zeichnet bei der Verschiebung des Panels immer noch die Scrollleisten, die einzige Möglichkeit, die da wohl funktioniert ist, bei der Form beide Scrollleisten auf Visisble=False zu stellen. Wenn jemand eine bessere Idee hat, nur her damit. 2. Es gibt ein leichtes Flimmern, wenn die Form in den Vordergrund geholt wird bei WM_MOVE. Wie man das behebt, weiß ich nicht, ich bin aber für Vorschläge offen. |
Re: TDesktopPanel - ein Panel direkt auf dem Desktop
Zu dem ersten Bug: statt des SetParent nimm lieber sowas:
Delphi-Quellcode:
Den zweiten kann ich garnicht nachvollziehen :gruebel:
Parent := new TWinControl.CreateParented(GetDesktopWindow);
Windows.SetParent(HAndle, GetDesktopWindow); Bleibt trotzdem noch die Frage - für ist sowas gut? |
Re: TDesktopPanel - ein Panel direkt auf dem Desktop
new TWinControl.CreateParented? :gruebel:
Und: Ich verwende es zum Beispiel für sowas in der Art wie Hinweisboxen, auf die man aber alles mögliche drauschmeißen kann, also die man frei gestalten kann zur Entwicklungszeit. EDIT: Ich forme die Kompo mal um zur einer "TInfoBox" und poste sie dann nochmal. |
Re: TDesktopPanel - ein Panel direkt auf dem Desktop
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe es jetzt mal als TInfoBox implementiert. Einfach Show aufrufen, wenn sie gezeigt werden soll.
|
DP-Maintenance
Dieses Thema wurde von "Chakotay1308" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Open-Source" verschoben.
|
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
Aloa!
Wie wärs mit einem Screenshot, bzw einer Demo-Exe :stupid: ? |
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
Die InfoBox-Unit wird nicht klappen wenn du die Trans.pas nicht mitlieferst oder die procedure nicht in die InfoBox.pas reinpackst ;)
|
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
:stupid: jetzt baut er die Trans.pas in alles ein :lol:
|
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
Nein.
Der Hint in meinem Periodensystem IST eine TInfoBox. Die war von Anfang an dafür geplant. Und ich mach das gleich alles, moment. |
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
cool. ab welcher version läuft die tinfobox??? D3??? Diese Kompo gefällt mir nämlich ;-)
|
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
Frag mich nicht, ich kanns nur mit D7 testen. Probiers halt aus.
|
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
OnLine 85 Kann er Mouse nicht finden und DoubleBuffred im Create hab ich mal ge//
Dann eben noch die Trans ins gleiche verzeichnis also schau mal was sich in line 85 machen lassen kann. Mfg Tobi |
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
Binde mal Controls ein, dann dürfte das mit Mouse funktionieren.
|
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
ist schon eingebunden. Kennt mein D3 leider nicht
|
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
WinAPI is was tolles... Neue Version im Anhang 1. Beitrag, die dürfte auch bei dir gehen.
(Nur das DoubleBuffered musste noch raustun) |
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
im ersten Beitrag ist das Panel aber nicht die infobox???
//Edit schneller als die polizei erlaubt ;-) |
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
Element " hat kein übergeornetes Fenster.
Wenn ich es in ein Form einfügen will. An wem liegts ;-) |
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
An dir. :stupid:
Spaß beiseite, will be fixed in next release. |
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
ok danke
|
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
Zitat:
Zitat:
![]() @ Topic: Das scheint ja eine interssante Kombo zu sein... Ich werds mir mal anguggen. |
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
@xZise: Das habe ich schon geschrieben. ;)
|
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
@EDE: Dein Problem ist gefixt.
|
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
jup es tut! :firejump:
könntest du noch ein Anwendungsbeispiel posten ;-) |
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
Ich mach das mal, wenn ich Zeit hab. Wahrscheinlich heute noch.
|
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
Zitat:
Zitat:
![]() |
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
Mit source ;-)
|
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
Zitat:
|
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
Zitat:
Die Form tut einfach so, als ob das Panel ihr immer noch gehören würde und zeichnet bei X/Y-Werten, bei denen X+InfoBox.Width>Form.Width oder Y+InfoBox.Height>Form.Height einfach Scrollleisten. |
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
Genau!
Dann könntest du ja sagen:
Delphi-Quellcode:
Und das meinte ich auch...
if InfoBox.Height + Y > Form.Height then
InfoBox.Height := Form.Height - Y; if InfoBox.Width + X > Form.Width then InfoBox.Width := Form.Width - X; Dann hast du das Scrollleisten-Problem gelöst. |
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
Das wäre aber nicht der Sinn der Sache.
Dann würde sich nämlich meine InfoBox verformen, was sie ja nicht soll. |
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
Öhm, hast du jetzt ma die Sourcen wie ich das Ding anwenden kann :gruebel:
Mfg Tobi |
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
Zitat:
Delphi-Quellcode:
gemacht.
bla := InfoBox.Create;
bla.bla2.bla3; |
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
Also ich würde es im Formulardesigner auf ne Form ziehen und dann Komponenten draufpacken. Angezeigt wird es dann einfach mit InfoBox.Show;
Allerdings kann mans natürlich auch zur Laufzeit erstellen, wenn man will.
Delphi-Quellcode:
InfoBox:=TInfoBox.Create(nil);
InfoBox.Width:=160; InfoBox.Height:=100; lbl:=TLabel.Create(InfoBox); lbl.Left:=8; lbl.Top:=8; lbl.Caption:='Blubb'; InfoBox.Show; |
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
Und wie gebe ich die Komponente wieder frei ? Mit oder ohne Freigabe bekomme ich beim Beenden des Programms eine AV.
|
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
Zitat:
|
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
Zitat:
:zwinker: und wie sieht das in einer Anwendung aus??? So wie in deinem Periodensystem als Hint könnte ichs nämlich gebrauchen ;-) |
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
Zitat:
1. Muss ich die Komponente und die Instanz freigeben 2. Steht hier doch das Problem: Zitat:
|
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
Also wenn du die Listbox in die Infobox tun willst, dann geht das nicht. Da musst du ne eigene Form nehmen. Denn Fokus in einem Panel ohne Parent - das kann nicht gut gehen.
|
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
Ich will die Infobox doch nur an der richtigen Stelle mit .Show anzeigen, ohne die Listbox in die Infobox zu packen.
|
Re: TInfoBox - eine InfoBox direkt auf dem Desktop
Dann gehts.
Sorry, ich dachte irgendwie das ganze wäre selbsterklärend. Du musst nur Labels auf die InfoBox packen, oder Images usw... Alles was keinen Fokus braucht. Mit Show zeigst du sie dann an und mit Hide verbirgst du sie wieder. Sorry, aber wozu ein Beispielprojekt? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:39 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