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)

TAppButton - Application Button like Firefox (experimentell)

Ein Thema von Satty67 · begonnen am 23. Okt 2011 · letzter Beitrag vom 3. Jul 2013
Antwort Antwort
Seite 2 von 4     12 34   
Benutzerbild von wicht
wicht

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

AW: TAppButton - Application Button like Firefox (experimentell)

  Alt 28. Okt 2011, 23: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.
Miniaturansicht angehängter Grafiken
fenster.png  
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
 
#12

AW: TAppButton - Application Button like Firefox (experimentell)

  Alt 29. Okt 2011, 00: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 17:25 Uhr)
  Mit Zitat antworten Zitat
Satty67

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

AW: TAppButton - Application Button like Firefox (experimentell)

  Alt 19. Nov 2011, 19:41
So, letztlich habe ich mich für eine Variante entschieden. Zwischendurch war ja sogar die Idee, mittels transparenter VCL-Form den ganzen Titlebar Bereich für Controls verfügbar zu machen. Das hab' ich verworfen.

Jetzt verwende ich eine eigene NonVCL Fensterklasse, die quasi wie ein Button-Control reagiert. (War sowieso mal fällig, das ich über den Bereich auch mal was lerne). Wie mir hier gezeigt wurde, ist es nicht so trivial, 32/64bit in einen Topf zu werfen. Hab' mich letztlich für eine Kombination aus Procedure und globaler Var entschieden (innerhalb der Unit im implemention Teil). Für mich geht das in Ordnung

Gegenüber der ersten Vorstellungen ein paar kleine Änderungen (hoffentlich Verbesserungen):
  • MainForm-Caption wird nicht mehr verändert. Es wird nur noch die WindowProc gehooked. Wenn MainForm/Button-Caption gleich sind, reicht das zum abdecken. Womit auch MainFormOnTaskbar unangetastet bleiben kann (wegen Win7, blinken wichtig).
  • Die runden Ecken des Vista-Button werden per Region gelöst, nicht mehr durch eine transparente Farbe. So gibt es auch keine Farbkollisionen.
  • Wenn das MainForm nicht den Fokus hat, wechselt der Button seine Farbe in clInactiveCaption (abschaltbar)
  • Wenn nicht im ClassicStyle, wird jetzt etwas weniger neugezeichnet. Bei ClassicStyle hab' ich es leider nicht hinbekommen, da ist das Filter zu viel Arbeit.

Mir bekannte Nachteile:
  • Je nach System schwimmt der Button bei schnellem Fenster bewegen. Tritt aber nicht immer auf und ich finde, man sieht es nur, wenn man darauf achtet.
  • Im ClassicStyle wird bei verkürzen des Caption-Textes der NC_Bereich verzögert aktualisiert. Für einen festen Caption-Text ist das zum Glück egal.
  • Unter Win7 ist bei BorderStyle Single/Dialog der Button etwas vom Rand abgesetzt. Beseitige ich noch, mangels Win7 System nur etwas mühsam.
  • ...und natürlich alles was ich übersehen habe

In der Anlage der aktuelle Source und wieder eine kleine App zum schnellen Testen.

Ich bin soweit zufrieden, zumal ich das nur für eine kleine mediale Anwendung im privaten Umfeld brauche.
Angehängte Dateien
Dateityp: zip AppButtonTest.zip (236,5 KB, 82x aufgerufen)
Dateityp: zip uAppButton_2.5.zip (5,0 KB, 50x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.007 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#14

AW: TAppButton - Application Button like Firefox (experimentell)

  Alt 19. Nov 2011, 20:08
Unter Aero tritt beim starten und beim Wiederhestellen von Minimiert der Effekt auf, dass der button schon da ist, bevor der Fenster da ist (durch die Einblendeanimation des Fensters)
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Satty67

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

AW: TAppButton - Application Button like Firefox (experimentell)

  Alt 19. Nov 2011, 20:20
Danke, sowas fällt natürlich nicht auf, wenn man nicht permanent Vista/Win7 zum Testen parat hat.

Ich bekomme in den nächsten Wochen endlich ein dauerhaftes Win7 System. Wird wohl erst mal am besten sein, während der Animation den Button einfach auszublenden... sofern man dafür Ereignisse gereicht bekommt.
  Mit Zitat antworten Zitat
Gustav.R
(Gast)

n/a Beiträge
 
#16

AW: TAppButton - Application Button like Firefox (experimentell)

  Alt 19. Nov 2011, 20:49
Hi Satty67,

sehr schöne Spielerei, dankeschön

Habe das da mit D7 personal kompiliert:

Delphi-Quellcode:
unit UnitTest1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  uAppButton,
  Dialogs, Menus;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    Datei1: TMenuItem;
    Bearbeiten1: TMenuItem;
    Beenden1: TMenuItem;
    Kopieren1: TMenuItem;
    PopupMenu1: TPopupMenu;
    Beenden2: TMenuItem;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  AppButton: TAppButton;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  AppButton := TAppButton.Create(self);
  AppButton.DropDownMenu := PopupMenu1;
  AppButton.Caption := Form1.Caption;
end;

end.
Läuft problemlos unter Windows2000, XP, Vista und 8DP.

Da unter 8DP die Form.Captions wieder zentriert werden (siehe Screenshot), muss man sich da halt was einfallen lassen, falls man mal mit findwindow herumbasteln will und die Form.Caption auf '' setzt

LG
Gustav
Miniaturansicht angehängter Grafiken
appbutton.jpg  
  Mit Zitat antworten Zitat
Gustav.R
(Gast)

n/a Beiträge
 
#17

AW: TAppButton - Application Button like Firefox (experimentell)

  Alt 19. Nov 2011, 21:00
Danke, sowas fällt natürlich nicht auf, wenn man nicht permanent Vista/Win7 zum Testen parat hat.

Ich bekomme in den nächsten Wochen endlich ein dauerhaftes Win7 System. Wird wohl erst mal am besten sein, während der Animation den Button einfach auszublenden... sofern man dafür Ereignisse gereicht bekommt.
Irgendwo im Internet gibt es sicher noch die Win7-Enterprise-Demo, die 90 Tage läuft. Die hatte ich mir schon ein paarmal parallel zu Vista (auf einer anderen Partition) installiert und nach Ablauf der 90 Tage jeweils wieder mit einer Ubuntu-Live-CD gelöscht. Für's Testen der eigenen Software reicht das.

LG
Gustav
  Mit Zitat antworten Zitat
Satty67

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

AW: TAppButton - Application Button like Firefox (experimentell)

  Alt 19. Nov 2011, 21:16
Schön, das auch mal unter 8 zu sehen bzw. das es da prinzipiell auch läuft. Notfalls lässt man da der Form den Text und nimmt für den Button nur den Text "Menu". Da bleibt aber noch Zeit

Was das Testen angeht... wo Du was von Demo schreibst fallen mir die VPC2007 Test-Images für den Explorer wieder ein. Sind wohl mehrere Gigabyte... muss mal schauen, ob ich mir den Download antue. Evtl. klappt es ja mit dem Win7 Notebook auch etwas schneller.
  Mit Zitat antworten Zitat
Gustav.R
(Gast)

n/a Beiträge
 
#19

AW: TAppButton - Application Button like Firefox (experimentell)

  Alt 19. Nov 2011, 21:27
Oh, Mist, habe mich zu früh gefreut

Starte ich meine Demo (unter Vista) über eine Desktop-Verknüpfung mit der Eigenschaft "maximiert", so erscheint der AppButton an "poDesigned" anstatt links oben in der Ecke. Erst beim Drüberfahren mit der Maus huscht er nach links oben. Liegt vermutlich an meiner Primitiv-Demo!

LG
Gustav

Edit hat ein vergessenes "e" dazugekauft. Die Win7-Enterprise-Demo (32bit) war (schlag' mich nicht) ein DVD-ISO-Download.

Geändert von Gustav.R (19. Nov 2011 um 21:44 Uhr)
  Mit Zitat antworten Zitat
Satty67

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

AW: TAppButton - Application Button like Firefox (experimentell)

  Alt 19. Nov 2011, 21:54
Schlecht... und gut. Scheint gleichzeit mit einer Lösung für von Stevie beschriebens Problem zu lösen zu sein.

Quasi wenn das Fenster fertig mit "Show" Aktionen ist nochmal ein Invalidate, davor notfalls verstecken. Ich melde mich, wenn das gelöst ist (nicht mehr heute ).

PS: Wird in all den Situation der Button erst Orange wenn das MainForm in Endposition ist? Unter XP sieht es so aus, als ob ich da über den Focus ein geeignetes Ereignis habe.

Geändert von Satty67 (19. Nov 2011 um 22:01 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 16:16

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