AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte TInfoBox - eine InfoBox direkt auf dem Desktop
Thema durchsuchen
Ansicht
Themen-Optionen

TInfoBox - eine InfoBox direkt auf dem Desktop

Ein Thema von 3_of_8 · begonnen am 1. Aug 2006 · letzter Beitrag vom 9. Apr 2007
Antwort Antwort
Seite 5 von 6   « Erste     345 6      
Benutzerbild von 3_of_8
3_of_8
Registriert seit: 22. Mär 2005
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.
Miniaturansicht angehängter Grafiken
hydrogenium_829.jpg  
Angehängte Dateien
Dateityp: zip infobox_634.zip (1,8 KB, 111x aufgerufen)
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
 
Nils_13
 
#41
  Alt 9. Aug 2006, 19:51
Weil es zu Fehlern beim Beenden kommt.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

 
Turbo Delphi für Win32
 
#42
  Alt 9. Aug 2006, 19:52
Glaskugel in Reparatur, bitte Code zeigen.
Manuel Eberl
  Mit Zitat antworten Zitat
Nils_13
 
#43
  Alt 9. Aug 2006, 20:18
iib := ib.Create(listbox); // iib = Instanz; ib = InfoBox genügt.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

 
Turbo Delphi für Win32
 
#44
  Alt 9. Aug 2006, 20:35
So, tut es das?

Mir jedenfalls nicht.

Du erzeugst eine Instanz mit deiner Listbox als Ownder.

Was hilft mir das weiter? Richtig, gar nichts.
Manuel Eberl
  Mit Zitat antworten Zitat
Nils_13
 
#45
  Alt 9. Aug 2006, 21:02
Hehe, ich meinte genügt für eine AV beim Beenden.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

 
Turbo Delphi für Win32
 
#46
  Alt 9. Aug 2006, 21:12
Also du machst folgendes:

iib := TInfoBox.Create(listbox);

Du bist dir sicher, dass die Listbox schon instantiiert ist?

Also ich hab einfach mal ne Form gebastelt, Listbox draufgeworfen, ins OnCreate...

Delphi-Quellcode:
var InfoBox: TInfoBox;
begin
InfoBox:=TInfoBox.Create(listbox1);
end;
...reingeschrieben. Funzt perfekt. Keine AV. Muss woanders dran liegen.
Manuel Eberl
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

 
Delphi 3 Professional
 
#47
  Alt 9. Aug 2006, 23:37
wollte das auch mal probieren, aber leider zeigt es nix an...(auch keine AV)

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  ib:=TInfobox.Create(self);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ib.Hide;
  ib.Width:=160;
  ib.Height:=100;
  with TLabel.Create(ib) do
  begin
    parent:=ib;
    Left:=8;
    Top:=8;
    Caption:='Blubb';
  end;
  ib.Show;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  if assigned(ib) then ib.free;
end;
warum (nicht D3-kompatibel, Doublebuffered ist raus, sonst nichts verändert)?

Gruß Frank
Frank Wunderlich
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

 
Turbo Delphi für Win32
 
#48
  Alt 9. Aug 2006, 23:54
Lass mal das Free im FormDestroy weg, das macht die Form automatisch, da sie der Owner ist.

Dein Problem überprüfe ich mal.
Manuel Eberl
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

 
Delphi 3 Professional
 
#49
  Alt 9. Aug 2006, 23:55
ich bekomme keine AV!

es wird keine infobox angezeigt beim buttonclick...
Frank Wunderlich
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

 
Turbo Delphi für Win32
 
#50
  Alt 9. Aug 2006, 23:57
Ich weiß, dass du keine kriegst. Lass es trotzdem weg, es ist unnötig.

Zu deinem Problem: So komisch es klingt: Du musst ein Parent zuweisen.

Pack ein...
ib.Parent:=Self; ...in das FormCreate und dann gehts auch.
Manuel Eberl
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 6   « Erste     345 6      


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 10:33 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