Tags:
delphi
Jeg har et meget stort problem med en "luk alle" funktion i en tekst-editor. Jeg har fundet ud af at lave funktionen men når man også skal spørge om man vil lukke dokumentet kosker det lidt med række følgen af hvilke nogle der bliver lukket og med mine faneblade... her er koden:
[kode for mainformens lukAlleclick]
procedure TMainForm.LukAlleDokumenter(Sender: TObject);
var
I: Integer;
begin
begin
LukAlleI := I;
ChildWinControl.TabIndex := I;
MDIChildren[I].BringToFront;
TChildWin(ActiveMDIChild).Close;
ShowMessage(MDIChildren[I].Caption);
end;
end;
[kode for ChildWin's onClose]
procedure TChildWin.FormClose(Sender: TObject; var Action: TCloseAction);
var
ModalResult: TModalResult;
begin
If SynMemo.Modified then
begin
If LowerCase(RightStr(FileName, 4)) <> 'ikke' then
begin
ModalResult := MessageDlg('Dokumentet ' + FileName + ' er ændret, vil du gemme ændringerne?', mtConfirmation, [mbYes, mbNo, MbCancel], 0);
If ModalResult = mrYes then
begin
SynMemo.Lines.SaveToFile(FileName);
Action := caFree;
MainForm.FilesOpen[MainForm.ChildWinControl.TabIndex] := '';
MainForm.ChildWinControl.Pages[MainForm.LukAlleI].Free;
end
Else
If ModalResult = mrNo then
begin
Action := caFree;
MainForm.FilesOpen[MainForm.ChildWinControl.TabIndex] := '';
MainForm.ChildWinControl.Pages[MainForm.LukAlleI].Free;
end
Else
begin
Action := caNone;
MainForm.LukDone := False;
end;
end
Else
begin
ModalResult := MessageDlg('Dokumentet ' + FileName + ' er ikke gemt, vil du gemme det?', mtConfirmation, [mbYes, mbNo, MbCancel], 0);
If ModalResult = mrYes then
begin
MainForm.GemDokumentSom(MainForm.MainMenuFilerGemSom);
Action := caFree;
MainForm.FilesOpen[MainForm.ChildWinControl.TabIndex] := '';
MainForm.ChildWinControl.Pages[MainForm.LukAlleI].Free;
end
Else
If ModalResult = mrNo then
begin
Action := caFree;
MainForm.FilesOpen[MainForm.ChildWinControl.TabIndex] := '';
MainForm.ChildWinControl.Pages[MainForm.LukAlleI].Free;
end
Else
begin
Action := caNone;
MainForm.LukDone := False;
end;
end;
end
Else
begin
Action := caFree;
MainForm.FilesOpen[MainForm.ChildWinControl.TabIndex] := '';
MainForm.ChildWinControl.Pages[MainForm.LukAlleI].Free;
end;
end;
Mvh
Kastermester
1 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 4 karma
Nu kan jeg ikke lige få hoved eller hale i din kode, men jeg har selv haft problemer med at lukker vinduer i et MDI projekt. Tricket er at køre koden nedefra altså
IKKE
For I := 0 to MDI.childrens.count - 1 do begin
MEN DERIMOD
For I := MDI.Childrens.count - 1 downto 0 begin
Er ikke helt sikker på at syntaxen er korrekt, det er længe siden jeg har brugt MDI.
Why Aren't You Coding ?
Aaangel