AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls TAppButton - Application Button like Firefox (experimentell)
Thema durchsuchen
Ansicht
Themen-Optionen

TAppButton - Application Button like Firefox (experimentell)

Ein Thema von Satty67 · begonnen am 23. Okt 2011 · letzter Beitrag vom 3. Jul 2013
Antwort Antwort
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#1

AW: TAppButton - Application Button like Firefox (experimentell)

  Alt 28. Okt 2011, 19:38
Hallo,

zuerst mal muss man ja Chris Rolliston für seinen Beitrag (Link von Stevie) dankbar sein. War sicher eine ziemliche Arbeit die ganzen Infos zu sammeln und daraus eine Demo zu bauen. Scheint auch tatsächlich der aktuell gegangene Weg für einen AppButton zu sein (also Titelbar ausblenden und im ClientBereich neu zu zeichnen)

Aber ich wollte den AppButton für eine kleine Multimedia-Anwendung... der Beispielcode ist fest im Mainform integriert, noch nicht für XP/Classic erweitert und trotzdem schon fast umfangreicher, als mein restlicher Projekt-code

Es musste für meinen Fall eine andere, einfache Lösung her...

Zufällig ist mir die Tage beim Zeichnen mit Paint.NET das Verhalten der Tool-Windows ins Auge gestochen. Mir kam also die Idee, ein Toolwindow in den Titlebar-bereich einzublenden. Entweder transparent als TButton-Träger oder einfach direkt das Verhalten eines Button simulierend.

Im Prinzip bekomme ich dadurch einige Vorteile:
  • Sollte in allen Windows-versionen gleich funktionieren, u.U. auch Windows 8
  • Kann entweder auch direkt einen TButton verwenden oder beim selber zeichnen die Ereignisse der TForm verwenden
  • Mit 3 Zeilen Code im MainForm ist der Button einsatzbereit
  • Insgesammt war wesentlich weniger Code nötig
  • Beim Resize flackert nichts

aber auch kleine Nachteile:
  • Bei einigen Testrechnern schwimmt der Button beim Move minimal (laufe ja letztlich hinterher), fällt zum Glück aber nur auf, wenn man darauf achtet
  • MainFormOnTaskbar = False;
  • und irgend etwas hab' ich sicher übersehen

Windows Vista/7 konnte ich nur kurz testen, ich hoffe es funktioniert trotz einer Arbeiten nach dem Test weiterhin. 64bit hab' ich überhaupt keine Version zum testen parat.

In der Anlage eine kleine Testanwendung, der Source folgt... muss ich aber noch aufräumen
Angehängte Dateien
Dateityp: zip AppBtnTest_1.2.zip (225,4 KB, 93x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: TAppButton - Application Button like Firefox (experimentell)

  Alt 28. Okt 2011, 20:14
Das kennst du: http://msdn.microsoft.com/en-us/library/bb688195
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#3

AW: TAppButton - Application Button like Firefox (experimentell)

  Alt 28. Okt 2011, 20:33
Die Vorstellung von MSDN kannte ich noch nicht, ist aber im Prinzip die Richtung in der das Beispiel von Chris Rolliston ging.

Es sieht bei MSDN zwar wesentlich übersichtlicher aus (was aber eher am .NETC++-Code liegt), DWM ist aber erst ab Vista+ verfügbar. Für XP muss man sich weiterhin eine eigene Lösung suchen.

Wenn man ab VISTA entwickelt, würde ich mich da reinarbeiten. Das muss ja gleich bei der Entwicklung/Planung des Mainform als Code einfließen.

Geändert von Satty67 (28. Okt 2011 um 20:41 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#4

AW: TAppButton - Application Button like Firefox (experimentell)

  Alt 28. Okt 2011, 21:07
Auch wenn das jetzt vllt nicht unbedingt für dich relevant ist:
Die neue Testanwendung läuft auch unter Wine (getestet unter Fedora/Gnome3) wie sie soll!

Scheint also sowieso die universellere Lösung zu sein.
Denn selbst wenn du den Button jetzt auch per DWM unter Win7 zum Laufen bekommst
- wie wird das dann, wenn du irgendwann mal auf MacOSX oder Linux portieren willst?
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#5

AW: TAppButton - Application Button like Firefox (experimentell)

  Alt 28. Okt 2011, 22:18
läuft auch unter Wine (getestet unter Fedora/Gnome3) wie sie soll!
Ist beruhigend... liegt aber eben auch daran, das ich kaum Abhängigkeiten habe... die vorhanden via alter Technik (GetSystemMetrics) hole.

In der Anlage der aktuelle Source-Code. Sind noch ein paar Kleinigkeiten zu implementieren und auf Sonderfälle zu untersuchen. Aber zum Spielen reichts

Ist im Moment auf jeden Fall noch als "Experiment" zu sehen.
Angehängte Dateien
Dateityp: zip uAppButton_1.2.zip (2,9 KB, 76x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#6

AW: TAppButton - Application Button like Firefox (experimentell)

  Alt 28. Okt 2011, 22:42
Gefällt mir auch gut!

Zwei kleine Probleme:
  • Wenn man unter Windows 7 das Fenster maximiert, passt der Button nicht mehr so ganz. Eventuelles neben-Quest: Ich benutze nicht das Standard-Windows-7-Theme. Interessant dabei: Der Firefox sieht am Anfang auch so "verkehrt" aus wie deine Komponente, wenn ich ihn maximiere. Ein paar Millisekunden später passt der Button sich beim Firefox allerdings an und liegt passig. Bild vom maximierten Fenster ist im Anhang.
  • Wenn man zweimal hintereinander auf den Button klickt, wird das Popup immer wieder angezeigt, wobei man eigentlich davon ausgehen sollte, dass es beim zweiten Klick wieder einklappt. Vielleicht ist das aber auch nur ein Fehler in der Demo-Anwendung, nicht in der Komponente an sich.
Angehängte Grafiken
Dateityp: png fenster.png (6,8 KB, 142x aufgerufen)
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#7

AW: TAppButton - Application Button like Firefox (experimentell)

  Alt 28. Okt 2011, 23:00
Das erste Problem sollte sich schnell lösen lassen, da muss man wohl nur Top < 0 abfangen, wenn fMainForm maximized. (Muss zum Win7 testen über die Strasse laufen, das mache ich morgen)

Das zweite Problem liegt noch am falschen Verhalten der Komponente, wenn DropDownMenu angegeben wird. Werde das morgen auch noch fixen.

Der neue Source ist ja in Post #10, falls jemand selber probieren möchte.

***

Update:

Die beiden Fehlverhalten beseitigt.

Wobei ich nicht unter Win7 testen konnte, aber dank dem Bild von Wicht denke ich das es beim abgeschnittenen Button daran lag, was oben beschrieben ist.

Das Buttonverhalten bei aufgeklapptem Menu, ist durch eine Prüfung, ob im "Hot"-Modus, auf das erwartete Verhalten angepasst.
Angehängte Dateien
Dateityp: zip uAppButton_1.3.zip (2,9 KB, 33x aufgerufen)

Geändert von Satty67 (29. Okt 2011 um 16:25 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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:

(?)

LinkBack to this Thread

Erstellt von For Type Datum
Untitled document This thread Refback 25. Okt 2011 15:16

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:18 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