Autor Beitrag
blackbirdXXX

ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1077
Erhaltene Danke: 1

Ubuntu Dapper

BeitragVerfasst: 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
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: 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. :nixweiss:

_________________
Hasta La Victoria Siempre
blackbirdXXX Threadstarter

ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1077
Erhaltene Danke: 1

Ubuntu Dapper

BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1144

Win XP
D5 Standard, D7 Pers, D2005 Pers
BeitragVerfasst: Do 31.07.03 13:45 
Hallo!

Das hatte ich auch schon :wink:
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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: 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 Threadstarter

ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1077
Erhaltene Danke: 1

Ubuntu Dapper

BeitragVerfasst: 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:
ausblenden 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:

ausblenden volle Höhe Delphi-Quelltext
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 + '/';

 //Kopiervorgang
  //Le.exe
   CopyFile(PChar(pfad + 'LE.ex_'), PChar(zv + 'LE.exe'), true);
   fortschritt.Width := fortschritt.Width + 10;
   Application.ProcessMessages;
  //help.chm
   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;
  //settings
   CreateDirectory(PChar(zv + 'settings/'), nil );
   fortschritt.Width := fortschritt.Width + 10;
   Application.ProcessMessages;
  //Samples
   CreateDirectory(PChar(zv + 'samples/'), nil );
   fortschritt.Width := fortschritt.Width + 10;
   Application.ProcessMessages;
  //buttons.ini
   dl.Lines.Clear;
   dl.Lines.SaveToFile(zv + 'settings/buttons.ini');
   fortschritt.Width := fortschritt.Width + 10;
   Application.ProcessMessages;
  //colors.ini
   dl.Lines.Clear;
   dl.Lines.SaveToFile(zv + 'settings/colors.ini');
   fortschritt.Width := fortschritt.Width + 10;
   Application.ProcessMessages;
  //csselement.ini
   dl.Lines.SaveToFile(zv + 'settings/csselement.ini');
   fortschritt.Width := fortschritt.Width + 10;
   Application.ProcessMessages;
  //csstag.ini
   dl.Lines.Clear;
   csstag.Lines.SaveToFile(zv + 'settings/csstag.ini');
   fortschritt.Width := fortschritt.Width + 10;
   Application.ProcessMessages;
  //csstag.ini
   dl.Lines.Clear;
   dl.Lines.SaveToFile(zv + 'settings/fonts.ini');
   fortschritt.Width := fortschritt.Width + 10;
   Application.ProcessMessages;
  //settings.ini
   dl.Lines.SaveToFile(zv + 'settings/settings.ini');
   fortschritt.Width := fortschritt.Width + 10;
   Application.ProcessMessages;
  //Uninstall
   CopyFile(PChar(pfad + 'uninstall.ex_'), PChar(zv + 'uninstall.exe'), true);
   Application.ProcessMessages;
  //Samples
   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');
  // Link
   CopyFile(PChar(pfad + 'indexfile.da_'), PChar(zv + 'visit www.active-4.com.url'), true);
   fortschritt.Width := fortschritt.Width + 10;
   Application.ProcessMessages;

  //Startmenü Verknüpfung
  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');
  //Desktop Verknüpfung
   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;

  //release Datei
  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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1144

Win XP
D5 Standard, D7 Pers, D2005 Pers
BeitragVerfasst: 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 Threadstarter

ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1077
Erhaltene Danke: 1

Ubuntu Dapper

BeitragVerfasst: Sa 02.08.03 19:54 
Aber bei den anderen Formularen geht es auch!

_________________
Klein, schwarz und ärgert Techniker? Jumper!
Tryer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 226
Erhaltene Danke: 7



BeitragVerfasst: 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?
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TStep4.Execute;
begin
  Show;
 
  // hier jetzt das CopyFile etc.

  Hide;
end;

Statt dann Step4.Show aufzurufen benutzt Du Step4.Execute, das hört sich sogar besser an :wink:

MfG,
Tryer
Raphael O.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: Sa 02.08.03 21:38 
du könntest auch im
exitformOnShow-Ereignis
step4.hide aufrufen ;) :?
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: 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 Threadstarter

ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1077
Erhaltene Danke: 1

Ubuntu Dapper

BeitragVerfasst: 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
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1144

Win XP
D5 Standard, D7 Pers, D2005 Pers
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 324



BeitragVerfasst: 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