| Autor |
Beitrag |
blackbirdXXX

      
Beiträge: 1077
Erhaltene Danke: 1
Ubuntu Dapper
|
Verfasst: Mi 30.07.03 17:15
Ich habe 4 gleich große Formulare. Wenn ich zum nächsten "blättern" will mache ich das mit
Delphi-Quelltext 1: 2:
| Form1.Hide; Form2.Show; |
Seltsamerweise spuckt das Programm beim blättern vom 3. Formular auf das 4. Formular eine Fehlermeldung aus:
| Zitat: | Debugger Excepion Notification
Project wizzard.exe raised exception class EInvalidOperation with message 'Cannot change Visible in OnShow or OnHide'. Process stopped. Use Step or Run to continue.
[ OK ] [ Help ]
[ ] View CPU Windows
|
_________________ Klein, schwarz und ärgert Techniker? Jumper!
Zuletzt bearbeitet von blackbirdXXX am Sa 02.08.03 06:57, insgesamt 1-mal bearbeitet
|
|
Terra23
      
Beiträge: 872
Win 8
Delphi 7
|
Verfasst: Mi 30.07.03 17:42
Warum machst du das eigentlich nicht mit ShowModal? Soweit ich weiß, kann man dann nicht zum vorherigen Fenster zurück, ohne das aktive zu schließen. 
_________________ Hasta La Victoria Siempre
|
|
blackbirdXXX 

      
Beiträge: 1077
Erhaltene Danke: 1
Ubuntu Dapper
|
Verfasst: Mi 30.07.03 20:08
Aber ich will es ja verstecken damit ich zum nächsten kommen. Beispiel Installshield
_________________ Klein, schwarz und ärgert Techniker? Jumper!
|
|
StefanH
      
Beiträge: 1144
Win XP
D5 Standard, D7 Pers, D2005 Pers
|
Verfasst: Do 31.07.03 13:45
Hallo!
Das hatte ich auch schon
Du hast irgend eine Schleife drin (also Zeigen - Verstecken ...), oder (wies bei mir war) du rufst es auf bevor es das Formular gibt.
Stefan
_________________ "Als es noch keine Computer gab, war das Programmieren noch relativ einfach."(Edsger W. Dijkstra)
"Ich bin nicht von Sinnen, sondern ich rede wahre und vernünftige Worte." (Paulus)
|
|
matze
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: Do 31.07.03 14:37
du darfst das nicht in einem onformcreate aufrufen, denn da sind möglicherweise die forms die du zeigen und verstecken wilst noch nicht created !
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
blackbirdXXX 

      
Beiträge: 1077
Erhaltene Danke: 1
Ubuntu Dapper
|
Verfasst: Sa 02.08.03 06:54
Es gibt eine Schleife. Die zählt die Dateien durch die kopiert werden und vergrößert einen Balken.
Am Ende der Schleife steht:
Delphi-Quelltext 1: 2: 3: 4:
| sleep(1000); Application.ProcessMessages; step4.Hide; exitform.Show; |
Die Anweisung steht in der Form.Activate
Allerdings passiert das auch in der Form.Show nur das ich dort dann das Fenster nicht sehe und dann steht dort. Einfach:
Cannot change Visible in OnShow or OnHide.
Vielleicht liegt der Fehler da drinnen. Aber ich kann ihn nicht entdecken:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119:
| procedure Tstep4.FormShow(Sender: TObject); var Quelldatei, Zieldatei, pfad, zv: string; i, max, fehler: Integer; begin left := form1.width div 2 - (width div 2); top := (form1.Height div 3) * 2; Application.ProcessMessages; pfad := ExtractFilePath(Application.ExeName); CreateDirectory(PChar(step2.Edit1.Text + '/'), nil ); zv := step2.Edit1.Text + '/';
CopyFile(PChar(pfad + 'LE.ex_'), PChar(zv + 'LE.exe'), true); fortschritt.Width := fortschritt.Width + 10; Application.ProcessMessages; CopyFile(PChar(pfad + 'help.ch_'), PChar(zv + 'help.chm'), true); fortschritt.Width := fortschritt.Width + 10; Application.ProcessMessages; dl.Lines.SaveToFile(zv + 'template.htm'); fortschritt.Width := fortschritt.Width + 10; Application.ProcessMessages; CreateDirectory(PChar(zv + 'settings/'), nil ); fortschritt.Width := fortschritt.Width + 10; Application.ProcessMessages; CreateDirectory(PChar(zv + 'samples/'), nil ); fortschritt.Width := fortschritt.Width + 10; Application.ProcessMessages; dl.Lines.Clear; dl.Lines.SaveToFile(zv + 'settings/buttons.ini'); fortschritt.Width := fortschritt.Width + 10; Application.ProcessMessages; dl.Lines.Clear; dl.Lines.SaveToFile(zv + 'settings/colors.ini'); fortschritt.Width := fortschritt.Width + 10; Application.ProcessMessages; dl.Lines.SaveToFile(zv + 'settings/csselement.ini'); fortschritt.Width := fortschritt.Width + 10; Application.ProcessMessages; dl.Lines.Clear; csstag.Lines.SaveToFile(zv + 'settings/csstag.ini'); fortschritt.Width := fortschritt.Width + 10; Application.ProcessMessages; dl.Lines.Clear; dl.Lines.SaveToFile(zv + 'settings/fonts.ini'); fortschritt.Width := fortschritt.Width + 10; Application.ProcessMessages; dl.Lines.SaveToFile(zv + 'settings/settings.ini'); fortschritt.Width := fortschritt.Width + 10; Application.ProcessMessages; CopyFile(PChar(pfad + 'uninstall.ex_'), PChar(zv + 'uninstall.exe'), true); Application.ProcessMessages; dl.Lines.Clear; dl.Lines.SaveToFile(zv + 'samples/design1.css'); fortschritt.Width := fortschritt.Width + 10; Application.ProcessMessages; dl.Lines.SaveToFile(zv + 'samples/design2.css'); fortschritt.Width := fortschritt.Width + 10; Application.ProcessMessages; dl.Lines.SaveToFile(zv + 'samples/design3.css'); fortschritt.Width := fortschritt.Width + 10; Application.ProcessMessages; dl.Lines.SaveToFile(zv + 'samples/design4.css'); fortschritt.Width := fortschritt.Width + 10; Application.ProcessMessages; dl.Lines.SaveToFile(zv + 'samples/design5.css'); fortschritt.Width := fortschritt.Width + 10; Application.ProcessMessages; dl.Lines.SaveToFile(zv + 'samples/design6.css'); fortschritt.Width := fortschritt.Width + 10; Application.ProcessMessages; dl.Lines.SaveToFile(zv + 'samples/design7.css'); fortschritt.Width := fortschritt.Width + 10; Application.ProcessMessages; dl.Lines.SaveToFile(zv + 'samples/design8.css'); CopyFile(PChar(pfad + 'indexfile.da_'), PChar(zv + 'visit www.active-4.com.url'), true); fortschritt.Width := fortschritt.Width + 10; Application.ProcessMessages;
CreateFolder(SpecialDirectory(CSIDL_Programs)+'Liquid Edit'); if step2.CheckBox2.Checked then CreateLink(zv + 'LE.exe',SpecialDirectory(CSIDL_Programs)+'Liquid Edit\Liquid Edit.lnk','Liquid Edit'); CreateLink(zv + 'Uninstall.exe',SpecialDirectory(CSIDL_Programs)+'Liquid Edit\Deinstallation.lnk','Deinstallation'); CreateLink(zv + 'visit www.active-4.com.url',SpecialDirectory(CSIDL_Programs)+'Liquid Edit\active-4.com.lnk','active-4.com'); if step2.CheckBox1.Checked then begin CreateLink(zv + 'LE.exe',SpecialDirectory(CSIDL_Desktopdirectory)+'Liquid Edit.lnk','Liquid Edit'); end;
speedbutton3.Visible := false; fortschritt.Width := 200; Application.ProcessMessages;
dl.Lines.Clear; dl.Lines.Add('//Liquid Edit Setup File'); dl.Lines.Add(step2.Edit1.Text); dl.Lines.Add(SpecialDirectory(CSIDL_Desktopdirectory)+'Liquid Edit.lnk'); dl.Lines.Add(SpecialDirectory(CSIDL_Programs)+'Liquid Edit'); dl.Lines.SaveToFile('C:/liquidedit.log');
sleep(1000); Application.ProcessMessages; step4.Hide; exitform.Show; end; |
PS.: Ich habe den Code etwas abgekürzt. Z.B.: Werden die Lienen der dl mit allen möglichen Werten gefüllt.
_________________ Klein, schwarz und ärgert Techniker? Jumper!
|
|
StefanH
      
Beiträge: 1144
Win XP
D5 Standard, D7 Pers, D2005 Pers
|
Verfasst: Sa 02.08.03 11:15
Du darfst dass step4.Hide nicht aufrufen 
_________________ "Als es noch keine Computer gab, war das Programmieren noch relativ einfach."(Edsger W. Dijkstra)
"Ich bin nicht von Sinnen, sondern ich rede wahre und vernünftige Worte." (Paulus)
|
|
blackbirdXXX 

      
Beiträge: 1077
Erhaltene Danke: 1
Ubuntu Dapper
|
Verfasst: Sa 02.08.03 19:54
Aber bei den anderen Formularen geht es auch!
_________________ Klein, schwarz und ärgert Techniker? Jumper!
|
|
Tryer
      
Beiträge: 226
Erhaltene Danke: 7
|
Verfasst: Sa 02.08.03 21:19
In TForm.OnShow gehts halt nicht, die Fehlermeldung ist wohl eindeutig.
Was spricht gegen eine Methode "Execute" wie man sie von diversen Dialogen kennt?
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| procedure TStep4.Execute; begin Show; Hide; end; |
Statt dann Step4.Show aufzurufen benutzt Du Step4.Execute, das hört sich sogar besser an
MfG,
Tryer
|
|
Raphael O.
      
Beiträge: 1596
VS 2013
|
Verfasst: Sa 02.08.03 21:38
du könntest auch im
exitformOnShow-Ereignis
step4.hide aufrufen 
|
|
Aya
      
Beiträge: 1964
Erhaltene Danke: 15
MacOSX 10.6.7
Xcode / C++
|
Verfasst: Sa 02.08.03 21:58
Hi,
auch wenn das jetzt mal garnix mit dem Thema zu tun hat direkt.. *g*
Wenn ich das richtig verstehe möchtest du á la InstallShield mehrere Forms hintereinander packen, durch die man durchblättern kann, ja???
Dafür würde ich dir allerdings Frames emfephlen, nicht Forms... ist wesentlich leichter zu verwalten, und genau für diesen Zweck gemacht (Auch das InstallShield benutzt Frames  )
Au'revoir,
Aya~
_________________ Aya
I aim for my endless dreams and I know they will come true!
|
|
blackbirdXXX 

      
Beiträge: 1077
Erhaltene Danke: 1
Ubuntu Dapper
|
Verfasst: So 03.08.03 16:02
Stimmt. Frames wären besser nur leider verwende ich in diesem Fall Delphi3 Pro und da gibt es keine Frames.
Aber ich habe es auch mit
Delphi-Quelltext 1: 2: 3: 4:
| procedure Texitform.FormActivate(Sender: TObject); begin step4.Close; end; |
probiert aber der Fehler ist der selbe.
_________________ Klein, schwarz und ärgert Techniker? Jumper!
|
|
StefanH
      
Beiträge: 1144
Win XP
D5 Standard, D7 Pers, D2005 Pers
|
Verfasst: So 17.08.03 20:23
du darfst deine Form nicht schließen, wenn sie gerade gezeigt wird...
_________________ "Als es noch keine Computer gab, war das Programmieren noch relativ einfach."(Edsger W. Dijkstra)
"Ich bin nicht von Sinnen, sondern ich rede wahre und vernünftige Worte." (Paulus)
|
|
barfuesser
      
Beiträge: 324
|
Verfasst: Mo 18.08.03 09:25
Hi,
| blackbirdXXX hat folgendes geschrieben: | | Stimmt. Frames wären besser nur leider verwende ich in diesem Fall Delphi3 Pro und da gibt es keine Frames. |
Dann nimm doch Panels, die Du über einander legst.
barfuesser
|
|