Index: VerpakkingsDefinitie/UI/Util.pas =================================================================== diff -u -r593 -r598 --- VerpakkingsDefinitie/UI/Util.pas (.../Util.pas) (revision 593) +++ VerpakkingsDefinitie/UI/Util.pas (.../Util.pas) (revision 598) @@ -4,6 +4,7 @@ uses Vcl.ExtCtrls, // Control op grid + Vcl.StdCtrls, // Label over scherm tonen Vcl.Controls, System.SysUtils, // Free control children System.Types, Vcl.Graphics; // Color lightener @@ -12,6 +13,7 @@ class procedure VervangControl(OudeControl: TControl; NieuweControl: TControl); class procedure PlaatsControlOpGrid(Grid: TGridPanel; Control: TControl; RowI: Integer; ColI: Integer; RowSpan: Integer = 1; ColSpan: Integer = 1); + class procedure ToonLabelOverScherm(Scherm: TWinControl; var LabelControl: TLabel; Boodschap: string; Aanwezig: Boolean); class procedure FreeControlChildren(AControl: TControl); class function LightenColor(RGB: Cardinal; Percentage: Integer): Cardinal; static; end; @@ -57,6 +59,50 @@ Grid.ControlCollection[index].ColumnSpan := ColSpan; end; +// TOON LABEL OP SCHERM +class procedure TUtil.ToonLabelOverScherm(Scherm: TWinControl; var LabelControl: TLabel; Boodschap: string; Aanwezig: Boolean); +var + I: Integer; +begin + if Aanwezig then + begin + // Skip update als alles al zichtbaar staat. + if Assigned(LabelControl) = False then + exit; + + LabelControl.visible := False; + FreeAndNil(LabelControl); + + // Wel resultaten, toon alles. + for I := 0 to Scherm.ControlCount - 1 do + if Assigned(Scherm.Controls[I]) then + Scherm.Controls[I].visible := True; + end + else + begin + // Skip update als melding al getoond wordt en alles onzichtbaar staat. + if Assigned(LabelControl) then + exit; + + // Geen resultaten, verberg kinderen, toon melding (label) en stop. + for I := 0 to Scherm.ControlCount - 1 do + if Assigned(Scherm.Controls[I]) then + Scherm.Controls[I].visible := False; + // Label tonen + LabelControl := TLabel.Create(Scherm); + with LabelControl do + begin + parent := Scherm; + Caption := Boodschap; + Font.Size := 15; + // Centreren: https://stackoverflow.com/questions/18545937/make-a-component-appear-in-the-middle-of-form-no-matter-what-screen-resolution + Left := (Scherm.Width - Width) div 2; + Top := (Scherm.Height - Height) div 2; + Anchors := []; // Relatief tegenover parent + end; + end +end; + // FREE CONTROL CHILDREN // Recursieve methode om de kinderen van een TWinControl te free-en (hanging pointers voorkomen) // Gebaseerd op: https://stackoverflow.com/questions/414928/is-there-any-way-to-get-all-the-controls-on-a-container-control