| Autor |
Beitrag |
crakos
      
Beiträge: 195
D2k5 Pers
|
Verfasst: Fr 13.05.05 16:12
//////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Problem zwar gelöst: hier
ABER: Der fehler im Programcode wurde bis jetzt NICHT gefunden!
//////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Hallo, hoffe hab das richtige Sparte erwischt
Ich benutze diesen Code zum erstellen meiner Taskleiste, funktioniert auch perfekt.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| Data.cbSize := SizeOf(TAppBarData);; Data.hWnd := MainForm.Handle; Data.uCallbackMessage := WM_APP; Data.uEdge := ABE_TOP; Data.rc.Left := 0; Data.rc.Top := 0; Data.rc.Right := 200; Data.rc.Bottom := 70; if SHAppBarMessage(ABM_NEW, Data) = 0 then begin ShowMessage('AppBar konnte nicht registriert werden'); exit; end; SHAppBarMessage(ABM_QUERYPOS, Data); SHAppBarMessage(ABM_SETPOS, Data); MainForm.BorderStyle := bsNone; MoveWindow(MainForm.Handle, 0, 0, Screen.Width, 70, True); |
Das Problem ist, wenn ich das Program schließe, wird der Bereich nicht wieder freigegeben, ich kann also keine Fenster in den Bereich ziehen.
Delphi-Quelltext 1:
| SHAppBarMessage(ABM_REMOVE, Data); |
Ich habe diesen befehl so ziemlich überall hingeschrieben(ende button,destroy,onclose)
hilft nix.
Wo ist mein Fehler?
Vielen dank schonmal
Moderiert von raziel: Titel geändert: Redundantes nicht entfernt.
_________________ Das Ende der Menschheit ist der Anfang der Unendlichkeit.
Zuletzt bearbeitet von crakos am So 15.05.05 19:00, insgesamt 2-mal bearbeitet
|
|
feivel3333
      
Beiträge: 190
W7
Delphi XE prof
|
Verfasst: Fr 13.05.05 21:24
Gibt es bei deinem Data-Element ein Release, also z.B.
Data.Release;
oder
Data.Free;
oder
Data := NIL beim Beenden des Programms?
Da ich nur ein Fragment des gesamten Quellcodes sehe, kann ich es nicht nachvollziehen. Zudem weiß ich nicht, auf welcher Delphi-Version du arbeitest. Und vor allem nicht, was Data überhaupt ist, woraus es generiert wurde.
Gruß, AS
|
|
crakos 
      
Beiträge: 195
D2k5 Pers
|
Verfasst: Fr 13.05.05 21:41
sry
Delphi-Quelltext
Das ist der gesamte sidebar code.
hab delphi 2005 per steht doch rechts bei mir.
free und Release bringt nix
außerdem versteh ich nicht was das direkt bringt.
Delphi-Quelltext 1:
| SHAppBarMessage(ABM_REMOVE, Data); |
dachte dies bedeutet, das er den bereich, mit den werten von data wieder freigibt.
_________________ Das Ende der Menschheit ist der Anfang der Unendlichkeit.
|
|
feivel3333
      
Beiträge: 190
W7
Delphi XE prof
|
Verfasst: Fr 13.05.05 21:53
Bei D2K muss ich passen, da muss jemand anderes helfen. Habe diese Version leider noch nicht.
Schönes Wochenende an alle!
|
|
crakos 
      
Beiträge: 195
D2k5 Pers
|
Verfasst: Fr 13.05.05 21:56
schade, wusste gar nicht, das da so ein unterschied zwischen den delphi versionen ist.
Aber danke fürs antworten 
_________________ Das Ende der Menschheit ist der Anfang der Unendlichkeit.
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Fr 13.05.05 23:34
Erzeugt D2K5 nicht nur .NET code? ich glaube, es gelesen zu haben... jedenfalls hab ich versucht anhand von D7 jemandem mit D2k5 die grundbegriffe beizubringen. an Label1.Caption:='hallo' sind wir gescheitert...
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 13.05.05 23:58
Nein, so wohl als auch. Du kannst damit beides erstellen.
|
|
crakos 
      
Beiträge: 195
D2k5 Pers
|
Verfasst: Sa 14.05.05 00:18
D2k5 unterstüzt beides. Das prg hab ich nicht in .net geschrieben
habe noch nie was in .net geschrieben. Kenne voner Schule nur win32 also die normale delphie sprache. Ich weiss nicht wo da der unterschied eigentlich ist.
Achso um in d2k5 eine win 32 form zu starten,
File->New->VCL Forms Application-Delphi for Win32
einen anderen Weg hab ich bisher nicht gefunden
Hoffe einer von euch kann mir nun sagen, warum der ver$&#te Bereich nicht wieder freigegeben wird.
_________________ Das Ende der Menschheit ist der Anfang der Unendlichkeit.
|
|
crakos 
      
Beiträge: 195
D2k5 Pers
|
Verfasst: Sa 14.05.05 01:15
was ich gerade herrausgefunden hab, wenn ich die MainForm(Sidebar) mit
BorderStyle=bsNone starte, dann habe ich in dem Bereich, wo normalerweise die Sidebar ist, ein leeres desktop feld, in das ich nichts hineinziehen kann.
Die MainForm befindet sich erst dadrunter.
Wenn ich aber die MainForm schließe und den code SHAppBarMessage(ABM_REMOVE, Data); ausführe, ist der Bereich wieder freigegeben.
Wenn ich es mit BorderStyle=bsSingle starte, dann befindet sich die Sidebar an ihrem Richtigen platz, aber der Platz wird nicht freigegeben.
Habs grad mal versucht beim Starten bsSingle
und beim verlaßen
Delphi-Quelltext 1: 2: 3:
| MainForm.BorderStyle:=bsNone; MainForm.Update; SHAppBarMessage(ABM_REMOVE, Data); |
Hilft aber nichts hoffe nun kann mir einer helfen.
Versuche dann morgen weiter,hoffe aber ihr helft mir auf die Sprünge 
_________________ Das Ende der Menschheit ist der Anfang der Unendlichkeit.
|
|
crakos 
      
Beiträge: 195
D2k5 Pers
|
Verfasst: Sa 14.05.05 12:08
Morgen,
Habe gerade mal rumgespielt.
Also wenn ich die grundeinstellung(opjektinspektor) bsSingle hab
dann kommt Richtiger Bereich, wird aber nicht wieder freigegeben.
Wenn ich grundeinstellung bsNone ANSCHLIEßEND mache
Also single starten schließen, bsnone einstellen starten.
Ist es der Richtige Bereich, UND der Bereich wird nachher auch freigegeben.
Na also denkste machste von anfang an bsNone ja von wegen,
Dann ist wieder das wie gerade beschrieben: Taskbereich registriert, aber die leiste nicht drin Oo, aber wird nachher freigegeben.
Ich könnt heulen Oo
_________________ Das Ende der Menschheit ist der Anfang der Unendlichkeit.
|
|
crakos 
      
Beiträge: 195
D2k5 Pers
|
Verfasst: Sa 14.05.05 12:48
Naja hab jetzt sowas wie eine Lösung. Geflällt mir zwar nicht, weil es das übel nicht an der wurtzel packt,also wenn wer den richtigen fehler findet, bitte mitteilen. danke.
Habe im FormDestroy den vollständigen sidebar code vor SHAppBarMessage(ABM_REMOVE, Data); geschrieben. naja nun gehts. Aber wie gesagt gefallen tut mir das nicht :/
Also wer weiss warum, warte 
_________________ Das Ende der Menschheit ist der Anfang der Unendlichkeit.
|
|