06 Dialoge als Komponente

15 Verschiedene Dialog Farben

Selfhtml

Einem Fenster/Dialog, kann man verschiedene FarbeSchema zuordnen.
Standardmässig wird folgendes verwendet:
Editor-Fenster : Blau
Dialog         : Grau
Hilfe-Fenster  : Cyan

Ohne Zutun, kommen die Fenster/Dialog immer in der richtigen Farbe.
Eine Modifizierung ist nur in speziellen Fällen von Sinnen.


Unit mit dem neuen Dialog.


Mit den 3 oberen Button, kann man das Farb-Schema des Dialoges ändern.
unit MyDialog;
Hier sind 3 Event-Konstante hinzugekommen.
type
  PMyDialog = ^TMyDialog;
  TMyDialog = object(TDialog)
  const
    cmBlue = 1006;
    cmCyan = 1007;
    cmGray = 1008;
  var
    CounterButton: PButton; // Button mit Zähler.

    constructor Init;
    procedure HandleEvent(var Event: TEvent); virtual;
  end;
Das Bauen des Dialoges ist nichts besonderes.
constructor TMyDialog.Init;
var
  Rect: TRect;
begin
  Rect.Assign(0, 0, 42, 11);
  Rect.Move(23, 3);
  inherited Init(Rect, 'Mein Dialog');

  // StaticText
  Rect.Assign(5, 2, 41, 8);
  Insert(new(PStaticText, Init(Rect, 'W' + #132 + 'hle eine Farbe')));

  // Farbe
  Rect.Assign(7, 5, 15, 7);
  Insert(new(PButton, Init(Rect, 'blue', cmBlue, bfNormal)));
  Rect.Assign(17, 5, 25, 7);
  Insert(new(PButton, Init(Rect, 'cyan', cmCyan, bfNormal)));
  Rect.Assign(27, 5, 35, 7);
  Insert(new(PButton, Init(Rect, 'gray', cmGray, bfNormal)));

  // Ok-Button
  Rect.Assign(7, 8, 17, 10);
  Insert(new(PButton, Init(Rect, '~O~K', cmOK, bfDefault)));
end;
Hier werden die Farb-Schemas mit Hilfe von Palette := dpxxx geändert.
Auch hier ist wichtig, das man Draw aufruft, diemal nicht für eine Komponente, sonder für den ganzen Dialog.
procedure TMyDialog.HandleEvent(var Event: TEvent);
begin
  inherited HandleEvent(Event);    // Vorfahre aufrufen.

  case Event.What of
    evCommand: begin
      case Event.Command of
        cmBlue: begin
          Palette := dpBlueDialog; // Palette zuordnen, hier blau.
          Draw;                    // Dialog neu zeichnen.
          ClearEvent(Event);       // Das Event ist abgeschlossen.
        end;
        cmCyan: begin
          Palette := dpCyanDialog;
          Draw;
          ClearEvent(Event);
        end;
        cmGray: begin
          Palette := dpGrayDialog;
          Draw;
          ClearEvent(Event);
        end;
      end;
    end;
  end;

end;



zurück