Startseite ¦  was ist neu ¦  programmier tips ¦  indy artikel ¦  intraweb artikel ¦  informationen ¦  links ¦  interviews ¦  sonstiges
kylix ¦  tutorials ¦  online shop ¦  fotos ¦  Add&Win Gewinnspiel


Willkommen Gast. Bitte einloggen oder registrieren.
22.05.2012, 14:10:37
Übersicht Hilfe Suche Einloggen Registrieren

+  SwissDelphiCenter Forum
|-+  German Forums
| |-+  Einsteiger Forum
| | |-+  StringGrid in Frame beschriften
« vorheriges nächstes »
Seiten: [1] Drucken
Autor Thema: StringGrid in Frame beschriften  (Gelesen 2051 mal)
Anatol
Gast
« am: 25.04.2002, 11:17:50 »

Hallo Forum,

ich komme wieder mal nicht weiter:

In meiner Form da hats ein Frame und in diesem Frame ist ein StringGrid drin.
Mit TForm1.FormCreate will ich Spalten und Zeilen beschriften und das funktioniert nicht. Nach dem Compilieren (fehlerlos) verabschiedet sich das Programm mit einer Fehlermeldung

"(...)'Access violation at adress 0044CF11 in module 'Project1.exe'. Read of adress 000002C0'.(...)"

Wenn ich das StringGrid direkt auf der Form1 plaziere, läuft alles Reibungslos...

Vielen Dank für Tipps!

Gruss, Anatol

Form1:

Code:

unit Unit1;



interface



uses

  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

  Unit2;



type

  TForm1 = class(TForm)

    Frame21: TFrame2;

    procedure FormCreate(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;



var

  Form1: TForm1;

  Frame21: TFrame2;



implementation



{$R *.DFM}



procedure TForm1.FormCreate(Sender: TObject);

var i:Integer;

begin

  with StringGrid1 do

  begin

   Cells[0,0]:='Nr.';

   Cells[1,0]:='X';

   Cells[2,0]:='Y';

   for i:=1 to RowCount-1 do Cells[0,i]:=IntToStr(i);

  end;

end;



end.



Frame21:

Code:

unit Unit2;



interface



uses

  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

  Grids;



type

  TFrame2 = class(TFrame)

    StringGrid1: TStringGrid;

  private

    { Private declarations }

  public

    { Public declarations }

  end;



var

  StringGrid1: TStringGrid;



implementation



{$R *.DFM}



end.

Gespeichert
Vladimir
Newbie
*
Offline Offline

Beiträge: 50



« Antworten #1 am: 25.04.2002, 13:47:37 »

Hi,

haste schonmal versucht das beschriften des Grid erst nach der erstellung des Forms zu machen? zum Beispiel im OnShowEvent oder so?

Ich vermute nämlich das Dein Frame zum Zeitpunkt der erstellung von Form1 noch nicht existiert! Das würde auch die Access violation erklären!

Gruß Vladimir
Gespeichert
Anatol
Gast
« Antworten #2 am: 25.04.2002, 16:45:05 »

Vielen Dank für die rasche Antwort!

Daran, dass das Frame nicht existiert, scheints nicht zu liegen... die gleichen Probleme treten auf, wenn ich die Beschriftung im OnShowEvent durchführen lasse oder durch einen OnClickEvent auslösen will...

Hat noch jemand eine Idee?

Gruss, Anatol
Gespeichert
Vladimir
Newbie
*
Offline Offline

Beiträge: 50



« Antworten #3 am: 25.04.2002, 17:16:10 »

Hi

ich habe übersehen , das Du das Stringgrid versucht in Form1 aufzurufen

Code:
var i:Integer;

begin

  with Frame21.StringGrid1 do

  begin

   Cells[0,0]:='Nr.';

   Cells[1,0]:='X';

   Cells[2,0]:='Y';

   for i:=1 to RowCount-1 do Cells[0,i]:=IntToStr(i);

  end;


so sollte es funzen!!!

Gruß Vladimir
Gespeichert
Schuggi
Full Member
***
Offline Offline

Beiträge: 179



« Antworten #4 am: 25.04.2002, 17:59:50 »

Vorsicht !
Du hast Frame21 2x benutzt !
Einmal als Objekt deiner Form ! (dadurch wird auch eine Instanz der Frameklasse angelegt)
und einmal Lokal ! (Ist aber nur ein Zeiger ohne eine Instanz)


Gruß Schuggi
Gespeichert
Anatol
Gast
« Antworten #5 am: 26.04.2002, 10:24:07 »

@vladimir: bingo! jetzt läufts tadellos! herzlichen dank!

@schuggi: bin noch blutiger anfänger, wie muss ich deinen kommentar berücksichtigen? kann es da zu irgendwelchen konflikten kommen? muss ich in meinem code etwas ändern?

Gruss, Anatol
Gespeichert
Schuggi
Full Member
***
Offline Offline

Beiträge: 179



« Antworten #6 am: 26.04.2002, 12:29:32 »

Ich geh mal davon aus, das du den folgenden Eintrag im globalen Bereich des Programs selbst eingetragen hast.

Code:
var

  Form1: TForm1;

  Frame21: TFrame2;  <<<-----


Den würde ich Rauslöschen !
Sonst hast du 2 Variablen "Frame21", eine (ein sinnvoller) in deiner Formklasse und eine die nur ein unnützer Zeiger ist der auf nix schaut.
Wenn du versuchen würdest auf den "sinnlosen" zuzugreifen, kannst du ne Schutzverletzung bekommen !

Gruß Schuggi
Gespeichert
Seiten: [1] Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006, Simple Machines LLC Prüfe XHTML 1.0 Prüfe CSS