He, dat koppelen is best gaaf. Echter blijf ik daar ook met een aantal puntjes zitten.
Overigens dacht ik dat het een goed idee om een tweede form te openen als Modal en dan de exe te starten, maar dit geeft ook problemen. Ik wil namelijk wachten tot de executable afgesloten is.
Als ik de form Modal start en start de exe pas nadat het form gesloten is
Ik denk dat ik dus maar de belangrijkste knoppen op het mainform disable als ik de exe start.
Dat ActionList krijg ik ook niet helemaal zoals ik het wil. In een MainMenu koppel ik ook Actions. Als ik dan letters weghaal in de Memo gaat "ongedaan maken" wel aan maar zet ie het niet terug als ik erop druk.
Knippen en Plakken werkt wel goed. Wellicht een fout aan mijn kant of een bug in Lazarus.
Thanks voor alle hulp
grrrrrrrrrr....nou disable ik de toolbarbuttons voordat ik de executable aftrap en nog buffert ie acties.
Code:
///////////////////////////////////////////////////////////////////////////////////
procedure TfrmMain.ControlsEnabled(ControlsEnabledStatus: TControlsEnabled);
///////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////
procedure ColorLabelsOnScrollbox(Scrollbox: TScrollBox; AColor: TColor);
/////////////////////////////////////////////////////////////////////////////////
var
i: integer;
item: TObject;
begin
for i:=Scrollbox.ControlCount-1 downto 0 do
begin
item := Scrollbox.Controls[i];
if (item is TMyLabel) then
TMyLabel(item).Font.Color := AColor;
end;
end;
var
ABoolean, AEnableHostsEdit: boolean;
begin
case ControlsEnabledStatus of
ceAllEnabled:
begin
ABoolean := true;
AEnableHostsEdit := true;
end;
ceAllDisabled:
begin
ABoolean := false;
AEnableHostsEdit := false;
end;
ceOnlyHostsEditEnabled:
begin
ABoolean := false;
AEnableHostsEdit := true;
end;
end;
tbtnRefresh.Enabled := ABoolean;
tbtnEditGoldenfile.Enabled := ABoolean;
tbtnAbout.Enabled := ABoolean;
scrollboxHosts.Enabled := ABoolean;
scrollboxRedactions.Enabled := ABoolean;
rgFilter.Enabled := ABoolean;
tbtnEditHostsfile.Enabled := AEnableHostsEdit;
menuEditHostsfile.Enabled := AEnableHostsEdit;
if ABoolean = false then
begin
ColorLabelsOnScrollbox(scrollboxRedactions, LABEL_DISABLED_COLOR);
ColorLabelsOnScrollbox(scrollboxHosts, LABEL_DISABLED_COLOR);
end
else begin
ColorLabelsOnScrollbox(scrollboxRedactions, LABEL_ENABLED_COLOR);
ColorLabelsOnScrollbox(scrollboxHosts, LABEL_ENABLED_COLOR);
end;
end;
procedure LaunchNotepadAndWait;
var
AProcess: TProcess;
begin
AProcess := TProcess.Create(nil);
AProcess.CommandLine := 'notepad.exe';
AProcess.Options := AProcess.Options + [poWaitOnExit];
AProcess.Execute;
AProcess.Free;
end;
///////////////////////////////////////////////////////////////////////////////////
procedure TfrmMain.EditHostsfile(AFilename: string);
// http://wiki.lazarus.freepascal.org/Executing_External_Programs
///////////////////////////////////////////////////////////////////////////////////
var
sBefore, sAfter: string;
begin
sBefore := uCommon.FileModifiedDateAsString(AFilename);
ControlsEnabled(ceAllDisabled);
Application.ProcessMessages;
//SysUtils.ExecuteProcess(UTF8ToSys('notepad.exe "' + AFilename + '"'), '', []);
LaunchNotepadAndWait;
sAfter := uCommon.FileModifiedDateAsString(AFilename);
ControlsEnabled(ceAllEnabled);
(* on error or file modified then re-init *)
if (sBefore = '') or (sAfter = '') or (sBefore <> sAfter) then
Initialize;
end;
Bookmarks