![]() |
Re: function für mehrere Units?
Nun teilt der Compiler uns leider mit, dass es einen Fehler mit dem TStringGrid gibt bei diesen Stellen:
procedure ProcessGrid (Grid: TStringGrid ; ActionId: Integer); procedure addmon (Grid: TStringGrid); usw... Woran könnte das leigen Fehlermeldung: Undefinierter Bezeichner: 'TStringGrid' Frage: Woran liegt das, weil es ja eigentlich richtig sein müsste, oder haben wir etwas übersehen ? (EDIT) Das problem ist gelöst. nun folgt das nöchste -.-... Lösung für das erste war das wir die "Grids" nicht unter uses eingetragen hatten nun haben wir im nicht mainprogramm die fehler meldung Inkompatible Typen: 'TStringGrid' und 'Class reference' und was bedeutet das nun und was ist eine Class reference überhaupt ?? ^^ |
Re: function für mehrere Units?
Ihm wird eine benötigte Unit fehlen. Einfach die Delphi-Hilfe aufmachen, TStringgrid suchen. Im Hilfefenster sollte dann zu sehen sein was für eine Unit das benötigt.
|
Re: function für mehrere Units?
Ohne Code zu sehen wird das nix ... Meine Kristallkugel ist grad in der Werkstatt. ;)
|
Re: function für mehrere Units?
okay dann hier mal die code fragmente
Delphi-Quellcode:
Andere Unit
unit Main;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, GIFImg, ExtCtrls, Grids; procedure ProcessGrid (Grid: TStringGrid ; ActionId: Integer); type //... private { Private-Deklarationen } public { Public-Deklarationen } end; var Form5: TForm5; implementation uses BList, BListK, Kndst, KndstK, Eink, EinkK, Verk, VerkK, KursT, KursTK; {$R *.dfm} procedure addmon (Grid: TStringGrid); var i : Integer; b : String; begin i := 0; Form4.StringGrid1.RowCount := Form4.StringGrid1.RowCount +1; for i := 1 to Form4.Stringgrid1.rowcount - 1 do begin b := IntToStr(i); Form4.Stringgrid1.Cells[0,i] := (b + '. Monat'); end end; //... procedure ProcessGrid (Grid: TStringGrid ; ActionId: Integer); begin case ActionId of 1: addmon (Grid); //2: adddrug (Grid); //3: killcol (Grid); end; end; end.
Delphi-Quellcode:
unit EinkK; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Unit8, Grids; type //... var Form13: TForm13; implementation uses Main, BList, BListK, Kndst, KndstK, Eink, Verk, VerkK; {$R *.dfm} procedure TForm13.ColorButton2Click(Sender: TObject); begin ColorDialog1.Execute; Form11.StringGrid1.Color := ColorDialog1.Color; end; procedure TForm13.ColorButton3Click(Sender: TObject); begin form13.close; end; procedure TForm13.ColorButton4Click(Sender: TObject); begin FontDialog1.Execute; Form11.StringGrid1.Font := FontDialog1.Font; end; procedure TForm13.ColorButton6Click(Sender: TObject); begin ProcessGrid (TStringGrid, 1); //<--- Hier tritt der Fehler Auf end; end. |
Re: function für mehrere Units?
Ihr solltet vielleicht mal ein paar Grundlagen Tutorials wälzen. :zwinker:
|
Re: function für mehrere Units?
Denke ich mir auch grad ... :wall:
|
Re: function für mehrere Units?
Moin, Moin,
habt ihr wirklich ein Stringgrid mit dem Namen TStringGrid ?????? Zitat:
|
Re: function für mehrere Units?
Delphi-Quellcode:
... und warum wird hier wohl ein Grid als Parameter übergeben?
procedure addmon (Grid: TStringGrid);
var i : Integer; b : String; begin i := 0; Form4.StringGrid1.RowCount := Form4.StringGrid1.RowCount +1; for i := 1 to Form4.Stringgrid1.rowcount - 1 do begin b := IntToStr(i); Form4.Stringgrid1.Cells[0,i] := (b + '. Monat'); end end; |
Re: function für mehrere Units?
Delphi-Quellcode:
Siehst Du den Unterschied?
procedure addmon (const Grid: TStringGrid);
var i : Integer; b : String; begin Grid.RowCount := Grid.RowCount.RowCount +1; for i := Grid.FixedRows to Grid.rowcount - 1 do begin b := IntToStr(i); Grid.Cells[0,i] := (b + '. Monat'); end; end; |
Re: function für mehrere Units?
Hi nochmal :lol:
Wir haben eine Globale Variable test und wollen nun von einem Formular die variable test aus einem Editfeld an die Prozedur im Mainprogramm übergeben. Dieser String dient als Beschriftung für die Spalte EDITIERT !! Unnötige Deklarationen sind jetzt weg Funktioniert auch so weit, aber unsere frage jetzt kann man das direkte zugreifen auf form13 umgehen, sodass die Procedur allgemein gültig ist und von jeder Form angesprochen werden kann Main:
Delphi-Quellcode:
Andere Unit
public
//Deklaration entfallen /... procedure adddrug (Const Grid: TStringGrid); begin // Vorher hier Grid.ColCount := Grid.ColCount + 1; grid.Cells[Grid.ColCount ,0] := form13.test; //Jetzt Hier Grid.ColCount := Grid.ColCount + 1; end; /... procedure ProcessGrid (Grid: TStringGrid ; ActionId: Integer); begin case ActionId of 1: addmon (Grid); 2: adddrug (Grid); //3: killcol (Grid); end; end;
Delphi-Quellcode:
Vielleicht könnt ihr uns helfen den String zu übergeben oder vielleicht kennt ihr eine bessere Lösung für unser Problem.
public
test : String; /... procedure TForm13.ColorButton5Click(Sender: TObject); //Deklaration entfallen begin test := Edit5.text; ProcessGrid(form11.StringGrid1, 2) end; Mit freundlichen Grüßen Manuel |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz