Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - BorderIcon "?"


Anonymous - So 23.02.03 13:14
Titel: BorderIcon "?"
Hi
Wie kann ich oben das BorderIcon "?" sichtbar machen und so das wenn man drauf drückt Form5 erscheint (show) ?


Mari - So 23.02.03 13:52

1.: Hier ein Auszug aus der Delphi-Hilfedatei:
Zitat:

Werden die Konstanten biMinimize und biMaximize nicht angegeben, erscheint in der Titelleiste ein Fragezeichen. Ansonsten wird kein Fragezeichen angezeigt.

Du kannst also entweder die Maximieren- und Minimieren-Buttons oder den Hilfebutton anzeigen, musst also auf Maximieren und Minimieren verzichten.(Die einzelnen Icons stellst du bei Bordericons an/aus)

2.:Ich weiß es zwar nicht genau, aber ich glaube nicht dass du selber auf den Druck des Buttons reagieren kannst.


Mari


matze - Mo 24.02.03 19:14

du kannst dir auch ne kompo schnappen, die dir beliebig viele icons in die titelleiste zaubert und dann ein ? reinbasteln das dann auch zusammen mit maximieren und minimieren zu sehen ist !


Delete - Mo 24.02.03 21:23

So kannst du auf eine Klick auf das Fragezeichen reagieren:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
{ eine kleine Trickserei - wollen wir mal die Kontexthilfe mißbrauchen :) }
procedure TForm1.WMSYSCOMMAND(var Msg: TMessage);
begin
  { WM_SYSCOMMAND abfangen }
  if Msg.Msg = WM_SYSCOMMAND then
  begin
    { wParam prüfen }
    case Msg.wParam of
      { war da doch jemand neugierig :) }
      SC_CONTEXTHELP: mnuAboutClick(Form1);
      { oder so unverschämt und beendet das ganze }
      SC_CLOSE: Close;
    else
      { alle anderen Fälle weiterreichen an die standard Fensterprozedur }
      Inherited;
    end;
  end;
end;

Und im private-Abschnitt von TForm:

Quelltext
1:
procedure WMSYSCOMMAND(var Msg: TMessage); Message WM_SYSCOMMAND;                    


Anonymous - Di 25.02.03 16:47

matze hat folgendes geschrieben:
du kannst dir auch ne kompo schnappen, die dir beliebig viele icons in die titelleiste zaubert und dann ein ? reinbasteln das dann auch zusammen mit maximieren und minimieren zu sehen ist !

und die währe?


Tino - Di 25.02.03 17:41

sCrAPt hat folgendes geschrieben:
und die währe?

Hast Du schon mal den Code von Luckie versucht? Ich denke das macht in diesem Fall mehr sinn als eine Komponenten dafür zu benutzen.

Gruß
Tino


Anonymous - Di 25.02.03 18:19

das bringt mir nix! Ich brauche oben noch das minimieren und wenns da ist kommt kein "?". Sonst währe es klasse.


Delete - Di 25.02.03 21:35

Das ist leider ein "as is" von Microsoft. Hier mal ein Auszug aus der Beschreibung zu CreateWindowEx:
Zitat:
WS_EX_CONTEXTHELP
Includes a question mark in the title bar of the window. When the user clicks the question mark, the cursor changes to a question mark with a pointer. If the user then clicks a child window, the child receives a WM_HELP message. The child window should pass the message to the parent window procedure, which should call the WinHelp function using the HELP_WM_HELP command. The Help application displays a pop-up window that typically contains help for the child window.

WS_EX_CONTEXTHELP cannot be used with the WS_MAXIMIZEBOX or WS_MINIMIZEBOX styles.

Die Vorgabe stammt also von Microsoft und dem Betriebssystem. Da kann sich leider auch Delphi nicht darüber hinwegsetzen. Ich habe mich auch schon oft darüber geärgert, dass man nicht beides nutzen kann - den normalen Fensterstil und den Button für die Kontexthilfe.
Aber diese Funktionalität ist wohl eben nur Dialogfenstern vorbehalten. Microsoft geht wahrscheinlich davon aus, dass normale Anwendungen ein Menü haben, oder Toolbars oder sonstige Elemente ... nur eben nichts, was gezielte Erklärungen bräuchte. :(

Die Alternative, sCrAPt, wäre entweder ein Extrabutton innerhalb der Form, oder du müsstest nach speziellen Komponenten Ausschau halten, mit der du noch ein paar Buttons in der Titelleiste unterbringen kannst.


matze - Fr 28.02.03 15:17

die kompos für die caption buttons gibt entweder hier:
http://www.appcontrols.com/components.html oder hier
http://www.maxcomponents.net/components.html#MXBUTTONS


Anonymous - Fr 28.02.03 16:23

die kosten :evil: :twisted: :roll: :autsch:


Delete - Fr 28.02.03 18:18

Nur der Tod ist umsonst.

Andere Möglichkeit: Knie dich rein und mach dir so eine Kompo selber.


Anonymous - Fr 28.02.03 18:37

Ich hab mal schnell in den Innhaltsverzeichnissen meiner Bücher geguckt. Ich hab zwar das Kapitel "Komponenten machen" gefunden aber da stand nix über Border/Captions-buttons :) Luckie: Mach du sie mir doch =)


Delete - Fr 28.02.03 18:47

Klar. Steht da nichts über dein spezielles Problem. Das kapitel wird allgemein sein und nur ein Beispiel geben. Und die Wahrscheinlichkiet, dass das Beispiel nicht zu deinem Problem paßt dürfte wohl relativ hoch sein.

Warum soll ich das machen? Ich brauche die Kompo nicht. Und wenn dann wäre sie sowieso Shareware. :mrgreen:


matze - Fr 28.02.03 19:22

also ich hab die kompo von der oberen adresse drauf, und obwohl die shareware ist, kommt bei mir kein splashscreen oder sonst was.
und die kompo von maxComponetens ist doch umsionst!


Delete - Fr 28.02.03 19:38

Ich hoffe, du löscht die wieder nach 30 Tagen. :mrgreen:


matze - Sa 01.03.03 11:25

hä wieso denn das ??

also mit der kompo von MAX kannste ein ? in die Titelleite einblenden. habs grad getestet und freeware ist die auch noch !


Delete - Sa 01.03.03 17:48

Achso. Ich dachte die, die du nutzt wäre die Shareware-Komponente.


Anonymous - So 23.03.03 13:45

Das Thema ist zwar schon alt aber ich frag jetzt trotzdem!

Für was ist dann Orders bei Max? Soviel ich weiß heißt das "BEZAHL oder du darfst die Kompo ned in deine Progis einbinden die du verkaufst"