procedure TfrmGeneralTimeoutDialog.FormClose(Sender: TObject; var Action: TCloseAction); begin if Assigned(FModaleResultProc) then FModaleResultProc(FModaleResult); Action := TCloseAction.caFree; end;
procedure ShowText; begin for var I := 0 to LTipLine - 1 do begin LLayout := TLayout.Create(Self); LLayout.Parent := lytClient; if I = 0 then LLayout.Height := 36 else LLayout.Height := 30; if (LTipLine = 1) and (I = 0) then LLayout.Align := TAlignLayout.VertCenter else LLayout.Align := TAlignLayout.Top; LText := TText.Create(Self); LText.Parent := LLayout; LText.Align := TAlignLayout.Client; if I = 0 then begin LText.TextSettings.Font.Size := AFirstLineFontSize; LText.TextSettings.FontColor := AFirstLineFontColor; end else begin LText.TextSettings.Font.Size := AGeneralLineFontSize; LText.TextSettings.FontColor := AGeneralLineFontColor; end; LText.TextSettings.HorzAlign := TTextAlign.Leading; LText.Text := ATipInfos[I]; end;
end;
begin lytClient.BeginUpdate; try LTipLine := Length(ATipInfos); if LTipLine = 0 then begin Exit; end else if (LTipLine > 0) and (LTipLine <= 4) then begin ShowText; end else if (LTipLine > 4) and (LTipLine <= 8) then begin LTmpHeight := (LTipLine - 4) * 30; rctDialogBase.Height := rctDialogBase.Height + LTmpHeight; ShowText; end else if LTipLine > 8 then begin LTipLine := 8; LTmpHeight := (LTipLine - 4) * 30; rctDialogBase.Height := rctDialogBase.Height + LTmpHeight; ShowText; end; finally
end; lytClient.EndUpdate; end;
class procedure TfrmGeneralTimeoutDialog.ShowModaleDialog(const ATipInfos: TArray<string>; const ABackupImage: TBitmap; const ADialogColor: TalphaColor; const ADialogOpacity: Single; const ATimeoutCount: Integer; const ALogoImage: TBitmap; const ATileText: string; const AOKText: string; const ACancelText: string; const AFirstLineFontColor: TAlphaColor; const AFirstLineFontSize: Integer; const AGeneralLineFontColor: TAlphaColor; const AGeneralLineFontSize: Integer; const ADefaultAction: TDefaultActionKind; AModaleResultProc: TModaleResultProc); begin TThread.Synchronize(nil, procedure var LForm: TfrmGeneralTimeoutDialog; begin LForm := TfrmGeneralTimeoutDialog.Create(nil); try //LForm.txtTipInfo.Text := ATipInfo; LForm.SetTipsShowArea(ATipInfos, AFirstLineFontColor, AFirstLineFontSize, AGeneralLineFontColor, AGeneralLineFontSize); LForm.rctDialogBase.Fill.Color := ADialogColor; LForm.rctDialogBase.Opacity := ADialogOpacity; LForm.TimeoutCount := ATimeoutCount; if Assigned(ALogoImage) then LForm.imgLogo.Bitmap.Assign(ALogoImage) else LForm.imgLogo.Width := 0; if not ATileText.IsEmpty then LForm.txtTile.Text := ATileText; if not AOKText.IsEmpty then LForm.spbtnOK.Text := AOKText; if not ACancelText.IsEmpty then LForm.spbtnCancel.Text := ACancelText; LForm.DefaultActionKind := ADefaultAction; LForm.ModaleResultProc := AModaleResultProc; LForm.imgBackupground.Bitmap.Assign(ABackupImage); LForm.Show; except LForm.Free; end; end); end;