Avatar billede anold Nybegynder
14. september 2004 - 09:10 Der er 11 kommentarer og
1 løsning

Skringer over i MessageDlg

Hej hvad fan... er der galt her

når min MessageDlg kommer frem og jeg siger JA så springer den ned til slut i proceduren uden at udføre noget som helst

procedure TFrmHovde.FormCloseQuery(Sender: TObject; var CanClose: Boolean);//Luk
begin
CanClose := False;
if MessageDlg('Ønsker du at afslutteprogrammet nu ?',mtconfirmation,
[mbyes,mbno],0)= mryes then
begin
Frmopsaetning.RichEdit1.Clear;
Frmopsaetning.RichEdit1.Lines.Add('[SETUP]');
Frmopsaetning.RichEdit1.Lines.Add('[STI FOR PLACERING AF SYSINFO FIL]');
Frmopsaetning.RichEdit1.Lines.Add(Frmopsaetning.EDIT3.TEXT);
Frmopsaetning.RichEdit1.Lines.Add('[STI FOR POSTPRO FIL (H) ÅBN MAPPE]');
Frmopsaetning.RichEdit1.Lines.Add(Frmopsaetning.EDIT1.TEXT);
Frmopsaetning.RichEdit1.Lines.Add('[STI FOR SIDSTE DIR]');
Frmopsaetning.RichEdit1.Lines.Add(Frmopsaetning.EDIT2.TEXT);
Frmopsaetning.RichEdit1.Lines.Add('[ÅBN NYESTE FIL AUTOMATISK]');
  If Frmopsaetning.CheckBox1.Checked = True Then
    Frmopsaetning.RichEdit1.Lines.Add('AUTOOPEN = 1')
    ELSE
        Frmopsaetning.RichEdit1.Lines.Add('AUTOOPEN = 0');

Frmopsaetning.RichEdit1.Lines.Add('[HUSK SIDSTE DIR]');
  If Frmopsaetning.CheckBox1.Checked = True Then
    Frmopsaetning.RichEdit1.Lines.Add('HUSKDIR = 1')
    ELSE
        Frmopsaetning.RichEdit1.Lines.Add('HUSKDIR = 0');

  Frmopsaetning.RichEdit1.Lines.SaveToFile(PATH);
canclose := True
end;
end;

end.
Avatar billede martinlind Nybegynder
14. september 2004 - 09:14 #1
Sikkert fordi at MessageDlg IKKE retunerer mrYES, prøv med IDYES jeg det er det den retunerer

if MessageDlg('Ønsker du at afslutteprogrammet nu ?',mtconfirmation,
[mbyes,mbno],0)= idyes

/Martin
Avatar billede anold Nybegynder
14. september 2004 - 09:33 #2
Hej Martin

Surt, men det virkede heller ikke
Avatar billede snowball Novice
14. september 2004 - 09:47 #3
Det er mryes der sendes tilbage.

Hvor ender du præcist hvis du siger Ja?

Din kode virker fint hos mig.
Avatar billede anold Nybegynder
14. september 2004 - 10:28 #4
så ender jeg ved den sidste end;
Avatar billede stone Forsker
14. september 2004 - 13:22 #5
prøv den her....
Application.MessageBox('Ønsker du at afslutte programmet nu ?', 'Navn på programmet', MB_YESNO) = IDNO then
    CanClose := False;
//stone
Avatar billede anold Nybegynder
14. september 2004 - 13:38 #6
Hej Stone
når jeg prøver dit forslag får jeg denne fejl
[Error] hovde.pas(292): Left side cannot be assigned to

hvad skal jeg prøve
Avatar billede stone Forsker
14. september 2004 - 13:58 #7
hmm her virker det..
Avatar billede kammeyer Nybegynder
14. september 2004 - 19:25 #8
anold - du skal huske at smide IF foran stone's forslag - det er en betingelse - ikke tildelingssætning.
Avatar billede kammeyer Nybegynder
14. september 2004 - 19:35 #9
Den virker også fint hos mig - er du sikker på at din PATH indeholder den rigtige sti ??
Avatar billede hrc Mester
14. september 2004 - 21:33 #10
Jeg har kigget din kode igen, rettet et par fejl (du bruger CheckBox1 to steder) - og jeg synes det virker fint (har placeret komponenterne på min testform, ikke som du, på frmOpsaetning) - desuden bruger jeg "with" for overskuelighedens skyld:

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose := False;
  if MessageDlg('Ønsker du at afslutte programmet nu ?',mtConfirmation, [mbYes,mbNo],0) = mrYes then
  begin
    with RichEdit1 do begin
      Clear;
      Lines.Add('[SETUP]');
      Lines.Add('[STI FOR PLACERING AF SYSINFO FIL]');
      Lines.Add(EDIT3.TEXT);
      Lines.Add('[STI FOR POSTPRO FIL (H) ÅBN MAPPE]');
      Lines.Add(EDIT1.TEXT);
      Lines.Add('[STI FOR SIDSTE DIR]');
      Lines.Add(EDIT2.TEXT);
      Lines.Add('[ÅBN NYESTE FIL AUTOMATISK]');
      Lines.Add('AUTOOPEN = '+BoolToStr(CheckBox1.Checked));
      Lines.Add('[HUSK SIDSTE DIR]');
      Lines.Add('HUSKDIR = '+BoolToStr(CheckBox2.Checked));
      Lines.SaveToFile(PATH);
    end;
    CanClose := True;
  end;
end;

Du slipper heller ikke for mine kommentarer:

1. Hvorfor bruger du richedit hvis en TStringList kunne gøre det?

var
  ParamList : TStringList;
begin
  ParamList := TStringList.Create;
  try
    ParamList.Add('[SETUP]');
    ParamList.Add('[STI FOR PLACERING AF SYSINFO FIL]');
    ParamList.Add(EDIT3.TEXT);
    ParamList.Add('[STI FOR POSTPRO FIL (H) ÅBN MAPPE]');
    ...
    ParamList.SaveToFile(PATH);
  finally
    ParamList.Free;
  end;
end;

2. Hvorfor giver du ikke dine komponenter nogle fornuftige navne. Man kan ikke se om CheckBox1 er ment til at styre AutoOpen eller HuskDir

3. Håber at det er Eksperten der fjerner indrykkene - for ellers kunne du godt gøre lidt mere i det...
Avatar billede anold Nybegynder
15. september 2004 - 14:04 #11
Hej, så er jeg tilbage igen

nu ser det ud til at det virker, det som fik det til at virke var det forslag som Stone kom med, hvorfor nogle af de andre ikke virker fatter jeg ikke en sk.. af, men mange tak for hjælpen alle sammen

PS stone kan du ikke give et svar således at du kan få dine points ??
Avatar billede stone Forsker
15. september 2004 - 18:09 #12
svar..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester