Autor Beitrag
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Mi 22.06.05 13:28 
Für ein Stundenplanprogramm brauche ich ein Stringgrid, welches man dynamisch an die Anzahl der Schulstunden anpassen kann. Also müsste es so lauten:

ausblenden Quelltext
1:
Stringgrid1.RowCount:=Schulstunden+1;					


In einer normalen Anwendung funktioniert das auch ganz gut( :D ), nur soll es eine Suche in der Delphi-PRAXiS MDI-Anewndung sein.
Wenn ich diesen Code in die MDI-Anwendung einbaue, bei der das ändern der Schulstunden durch einen Klick auf die Toolbar des Hauptfensters ausgelöst wird, kommt eine EAccessViolation. :evil: :evil: :evil: :evil:
Wenn es lokal vom Unterfenster ausgelöst wird, passiert gar nichts (keine Fehlermeldung, und leider keine Änderung der Zeilen).
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 22.06.05 14:43 
Dein Link zur DP ist leider sehr ungenau.
Das was du hier an Source zur Verfügung stellst ist korrekt. Ich arbeite auch mit MDI-Anwendungen. Mit einem StringGrid hatte ich noch keine Schwierigkeiten, wie du sie beschreibst.

Mach bitte einen Link auf das genaue Topic oder Stelle die entsprechenden Informationen auch hier zur Verfügung.
jakobwenzel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Mi 22.06.05 16:34 
Hier ist das Komplette Programm mit allen Dateien...l rumprobiert und deshalb ist nicht mehr alles so wie es war... Ich hoffe, ihr versteht es trotzdem.
Einloggen, um Attachments anzusehen!
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Mi 22.06.05 17:55 
1.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TMainForm.Zeiten1Execute(Sender: TObject);
begin
//  if MDIChildCount>0 then (MDIChildren[0]as TMDIChild).Hours; //dein alter code
  if ActiveMDIChild<>Nil then (ActiveMDIChild as TMDIChild).Hours;
end;

a) die MDI-Child beginnen bei 0 an zu zählen. daher rührt auch die AV, weil du etwas ansprichst, was gar nicht erstellt ist.
b) außerdem willst du doch immer, das das aktuelle MDI-Child verwendet wird.


2.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TMainForm.CreateMDIChild(const Name: string);
var
  Child: TMDIChild;
begin
  { ein neues untergeordnetes MDI-Fenster erstellen }
  Child := TMDIChild.Create(Application);
  Child.Caption := Name;
 // Child.Plan:=TStringGrid.Create(Child); //das muß raus
  if FileExists(Name) then Child.Load(Name);
end;

ich weiß nicht, wo du her hast, das du beim MDI-Child auch noch die Kompoinenten erstellen mußt, das machst du bei einer normalen Form doch auch nicht. Nimm das raus.

Mfg Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
jakobwenzel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Do 23.06.05 11:33 
Das m it dem Stringgrid erstellen hatte ich drinnen weil er ja anscheinend das Stringgrid nicht korrekt ansprechen konnte (wollte?), und ich deshalb dachte, dass das Stringgrid nicht korrekt erstellt worden wäre. :oops:

Aber jetzt funktioniert alles!! :D :D :D :D
Vielen Dank :!: :!: :!: :!: :!: