Auf Komponente von einer Prozedur aus zugreigen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
hbanko
Beiträge: 13
Registriert: Do 2. Mai 2013, 09:06

Auf Komponente von einer Prozedur aus zugreigen

Beitrag von hbanko »

Hallo zusammen,

ich frage einfach mal ganz doof :)

In meinem kleinen Programm moechte ich auf eine SQLITE3 Datenbank zugreifen:

Code: Alles auswählen

 
SQLQuery1.Close;
SQLQuery1.SQL.text:='SELECT * FROM settings WHERE ...
SQLQuery1.Open;   
Das funktioniert auch wenn ich den Code innerhalb einer Prozedure aufrufe, die sich im TForm1 Namespace befindet. Innerhalb meiner eigenen Prozeduren (z.B. Druck() ) klappt das nicht.

Ein voranggestelltes

Code: Alles auswählen

 
TForm1.SQLQuery1.Close;
 
Macht da keinen Unterschied. Auch kann ich meiner Druck() Funktion kein TForm1.Druck() voranstellen...

Sicher ganz einfache OOP Fragen, aber wenn ich im Buch nachlese machts hier irgendwie nicht klick :shock:

Gruss
Holger

RugiaArt
Beiträge: 41
Registriert: Do 11. Okt 2012, 18:50
OS, Lazarus, FPC: Win7 (L 1.0.0.2 FPC 2.6.0)
CPU-Target: 32Bit
Wohnort: Rügen
Kontaktdaten:

Re: Auf Komponente von einer Prozedur aus zugreigen

Beitrag von RugiaArt »

Code: Alles auswählen

uses SQLite3DS;
...
 
type
 
 TForm1 = class(TForm)
 public 
  MeineDatenbank:TSqlite3Dataset;
  procedure Druck();
 end;
 
implementation
 
procedure TForm1.Druck();
begin
  MeineDatenbank := TSqlite3Dataset.Create(nil);  
  MeineDatenbank.FileName := 'C:\datenbank.db';
  ...
 
  MeineDatenbank.SQL.text:='SELECT * FROM settings WHERE ...';
  MeineDatenbank.Open;
  MeineDatenbank.First;
 
  while not MeineDatenbank.EOF do
  begin
     //mach irgendwas mit der sql antwort
     MeineDatenbank.Next;
  end;
 MeineDatenbank.Close;
 MeineDatenbank.Free;
 ...
end;
-> Createn vergessen?

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Auf Komponente von einer Prozedur aus zugreigen

Beitrag von pluto »

Oder du musst die Klasse als Parameter Übergeben an einer Procedure, dann braucht es nicht mal eine Methode zu sein.
MFG
Michael Springwald

hbanko
Beiträge: 13
Registriert: Do 2. Mai 2013, 09:06

Re: Auf Komponente von einer Prozedur aus zugreigen

Beitrag von hbanko »

Also das Ding war, das ich die Prozedur Durck im Kopf bekannt machen musste:

Code: Alles auswählen

 
 public
     cwriterDB:TSqlite3Dataset;
     procedure Druck(amount,words,payee:string);
    { public declarations }
  end;                   
 
So wie es RugiArt auch beschrieben hat. Danach konnte ich die Prozedur dann als TForm1.Druck( .... usw deklarieren. Damit habe ich dan Zugriff auf den "Namespace". Vermutlich braucht sie nichtmal unter "Public" im Kopf stehen.

Bin begeistert, mache echt Fortschritte und Lazarus gefaellt wirklich gut.

Versuche gerade ne Toolbar einzubauen, mit den uebliche Buttons (Icons) Drucken,Speichern,... Gibts da keine Komponente mit der man das simpel machen kann? Im Netz hab ich nichts finden koennen.

Gruesse aus dem gerade regnerischen Kuala Lumpur
Holger

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Auf Komponente von einer Prozedur aus zugreigen

Beitrag von pluto »

Vermutlich braucht sie nichtmal unter "Public" im Kopf stehen.
Genau. Du kennst sie auch unter private hinzufügen.
Versuche gerade ne Toolbar einzubauen,
Es gibt eine Komponente: TToolBar nennt sie sich.
MFG
Michael Springwald

hbanko
Beiträge: 13
Registriert: Do 2. Mai 2013, 09:06

Re: Auf Komponente von einer Prozedur aus zugreigen

Beitrag von hbanko »

Ja, aber wenn ich die aufs Form1 ziehe, habe ich nur ne leere Box. Ich bin bis jetzt noch nicht dahinter gekommen, wie ich nun Buttons in die Toolbar bekomme.

Oder ist das nur ein leerer Container und ich muss mir Icons besorgen und manuell dort TButtons reinbasteln?

Gruss
Holger

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Auf Komponente von einer Prozedur aus zugreigen

Beitrag von pluto »

Richtig. eine ToolBar ist erst mal ein Leere Container. Du kannst zum Beispiel so weit ich weiß SpeedButtons hinzufügen oder andere Komponente.
MFG
Michael Springwald

Antworten