Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Listbox mit Untermenüverhalten?

  Alt 22. Jan 2007, 09:17
Guten Morgen Matthias,

Zitat von Mattze:
... Ist das nun Bug oder Feature, dass OnClick auf Tasten reagiert? ...
das ist definitiv ein Feature - siehe Online-Help unter TControl.OnClick().

Zitat von Mattze:
... Kann man prinzipiell (nicht nur OnClick und spezielle Tasten) überprüfen, ob das Ereignis von der Tastatur oder der Maus ausgelöst wurde? ...
Du könntest folgendes machen:

Delphi-Quellcode:
type
  TDemoForm = class(TForm)
    // ...
  private
    MouseIsDown: Boolean;
    ListBoxKey: Char;
  end;

procedure TDemoForm.ListBoxMouseUpDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  MouseIsDown := not MouseIsDown;
end;

procedure TDemoForm.ListBoxKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  ListBoxKey := #0;
end;

procedure TDemoForm.ListBoxKeyPress(Sender: TObject; var Key: Char);
begin
  ListBoxKey := Key;
  Key := #0; // roll your own hotkey
end;

procedure TDemoForm.ListBoxClick(Sender: TObject);
begin
  if not MouseIsDown then
    case ListBoxKey of
      // ...
    end
  else ShowMessage('mouse click');
  ListBoxKey := #0;
end;
Deine beiden anderen Fragen kann man zusammenfassen:

Zitat von Mattze:
... Welchen Font nimmt eigentlich ein Untermenü? ...
Dieser Font ist eine systemweite Einstellung. Du erreichst sie z.B. über die Eigenschaften im Kontextmenü des Desktops. Wenn du unter Erweiterte Darstellung das Element Menü auswählst, dann kannst du die Höhe der Menüleiste und die verwendete Schrift samt Größe festlegen.

Zitat von Mattze:
... Wenn man den Font vom Formular ändert, dann ändert sich die Schrift im horizontalen Hauptmenü. In den aufklappenden Untermenüs bleibt sie aber. ...
Nicht wenn du mit dem Systemmenü (TMainMenu) arbeitest.

Freundliche Grüße
  Mit Zitat antworten Zitat