03 Dialoge
50 StaticText gut fuer ein About
Hier wird ein About-Dialog erstellt, das sieht man gut für was man Label gebrauchen kann.
Die Datei, in welcher sich die Daten für den Dialog befinden.
const
DialogDatei = 'parameter.cfg';
Eine neue Funktion About ist hinzugekommen.
type
TMyApp = object(TApplication)
ParameterData: TParameterData; // Parameter für Dialog.
fParameterData: file of TParameterData; // File-Hander füe das speichern/laden der Daten des Dialoges.
constructor Init; // Neuer Constructor
procedure InitStatusLine; virtual; // Statuszeile
procedure InitMenuBar; virtual; // Menü
procedure HandleEvent(var Event: TEvent); virtual; // Eventhandler
procedure OutOfMemory; virtual; // Wird aufgerufen, wen Speicher überläuft.
procedure MyParameter; // neue Funktion für einen Dialog.
procedure About; // About Dialog.
end;
Hier wird das About augerufen, wen im Menü About gewält wird.
procedure TMyApp.HandleEvent(var Event: TEvent);
begin
inherited HandleEvent(Event);
if Event.What = evCommand then begin
case Event.Command of
cmAbout: begin
About; // About Dialog aufrufen
end;
cmList: begin
end;
cmPara: begin
MyParameter;
end;
else begin
Exit;
end;
end;
end;
ClearEvent(Event);
end;
About Dialog erstellen.
Mit TRext.Grow(... kann man das Rect verkleinern und vergrössern.
Mit #13 kann man eine Zeilenumbruch einfügen.
Mit #3 wird der Text horizontal im Rect zentriert.
Mit #2 wird der Text rechtbündig geschrieben.
Mit PLabel könnte man auch Text ausgeben, aber für festen Text eignet sich PStaticText besser.
procedure TMyApp.About;
var
Dia: PDialog;
Rect: TRect;
begin
Rect.Assign(0, 0, 42, 11);
Rect.Move(1, 1);
Dia := New(PDialog, Init(Rect, 'About'));
with Dia^ do begin
Options := Options or ofCentered; // Dialog zentrieren
// StaticText einfügen.
Rect.Grow(-1, -1); // Rect in allen Richtungen um 1 verkleinern.
Insert(New(PStaticText, Init(Rect,
#13 +
'Free Vison Tutorial 1.0' + #13 +
'2017' + #13 +
#3 + 'Zentriert' + #13 +
#2 + 'Rechts')));
Rect.Assign(16, 8, 26, 10);
Insert(New(PButton, Init(Rect, '~O~K', cmOK, bfDefault)));
end;
if ValidView(Dia) <> nil then begin
Desktop^.ExecView(Dia); // Modal aufrufen, Funktionsergebniss wird nicht ausgewrtet.
Dispose(Dia, Done); // Dialog frei geben.
end;
end;