Autor Beitrag
Kawa
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45
Erhaltene Danke: 1



BeitragVerfasst: So 27.04.08 14:01 
Hallo, wie kann ich "Tabcontrol onchanging" ereignis mit einem Button Aufrufen?...danke

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure THaubForm.TabCon1Changing(Sender: TObject; var AllowChange: Boolean);
begin
 case  HaubForm.TabCon1.TabIndex of
     0:gridspeichern(Grid1,'2008\a.au');
     1:gridspeichern(Grid1,'2008\b.au');
  end;
 end;

procedure THaubForm.Button1Click(Sender: TObject);

 begin
  tabcon1.OnChanging(Sender);  ===>Funktioniert nicht!
 end;


Moderiert von user profile iconGausi: Code- durch Delphi-Tags ersetzt
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: So 27.04.08 14:03 
Guck dir die Paramterliste des Ereignisses an, und die deines Aufrufes. Da fehlt was. ;-)

_________________
We are, we were and will not be.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19316
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 27.04.08 14:15 
Das zeigt dir ja auch die Syntaxergänzung an was user profile iconGausi meint, wenn du die Klammer hinter dem Namen der Prozedur eingibst ;-).

Du hast aber auch noch einen schwerwiegenden Fehler in deinem Quelltext. Du benutzt einen relativen Pfad, d.h. du weißt gar nicht wirklich wohin dein Programm die Daten speichert. Wie willst du die wiederfinden?

Entweder musst du das Verzeichnis deiner Anwendung benutzen oder (die beste Lösung) das Anwendungsdatenverzeichnis. Das aktuelle Arbeitsverzeichnis (das benutzt wird, wenn du keinen kompletten Pfan angibst), das ja nicht fest ist sondern sich während des Programmablaufs ändern kann, ist jedenfalls nicht geeignet.

Vorschlag, wenn du tatsächlich das Verzeichnis deiner Anwendung nehmen willst (geht unter Vista gar nicht mehr und unter XP nur, wenn die PCs schlecht konfiguriert sind, wenn das Programm unter C:\Programme liegt):
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
const
  FileNames: array[0..1of String = ('a.au''b.au');

procedure THaubForm.TabCon1Changing(Sender: TObject; var AllowChange: Boolean);
begin
  gridspeichern(Grid1, ExtractFilePath(ParamStr(0)) + '2008\' + FileNames[HaubForm.TabCon1.TabIndex]);
end;
Kawa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45
Erhaltene Danke: 1



BeitragVerfasst: So 27.04.08 14:25 
danke,
Ich weiss nicht was noch fehlen könnte.
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: So 27.04.08 14:28 
Na guck dir doch die Parameter an, wie es Gausi gesagt hat: Du musst noch einen Wert für AllowChange angeben, also_

tabcon1.OnChanging(Sender, true); oder tabcon1.OnChanging(Sender, false);
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: So 27.04.08 14:31 
Da AllowChange ein Var-Parameter ist, muss man wohl eher so: ;-)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure THaubForm.Button1Click(Sender: TObject); 
var dummy: Boolean
begin 
  TabCon1Changing(Sender, dummy); 
end;

_________________
We are, we were and will not be.
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: So 27.04.08 14:59 
Hab ich wohl übersehen. :idea:
Kawa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45
Erhaltene Danke: 1



BeitragVerfasst: So 27.04.08 15:03 
super! es Funktioniert,danke Gausi
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19316
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 28.04.08 01:34 
Soeben habe ich zu dem Problem mit der fehlenden Pfadangabe auch einen FAQ-Eintrag (inklusive eines Demoprojektes wie schnell so etwas schiefgeht) erstellt:
www.delphi-library.d...ewtopic.php?p=499701
Denn das machen viele und machen es weiter "weil es bei mir ja zufällig funktioniert"...
Kawa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45
Erhaltene Danke: 1



BeitragVerfasst: Mi 30.04.08 00:13 
Hallo jaenicke,

Du hast ja sehr gut erklärt wie man am besten macht.
Aber viele Hobby Programmierer machen das ganze auswendich,
weil halt sehr schnell u.leicht zu machen ist!

Richtig Programmieren zu können braucht man viel Zeit,geduld und können.
Man möchte nicht mit Profis konkurenz machen :)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19316
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 30.04.08 00:49 
Warum das so oft gemacht wird ist mir schon klar (fehlende Verzeichnisangabe --> Unwissenheit, speichern ins eigene Verzeichnis --> Bequemlichkeit) und ich behaupte ja nicht, dass ich z.B. das Speichern ins Anwendungsverzeichnis nie mache ;-).
Ich speichere nur nicht mehr bei Projekten, die ich von vorneherein veröffentlichen will, ins eigene Verzeichnis. Wenn ich selbst etwas für mich mache durchaus (und muss es bei Veröffentlichung dann nach Möglichkeit ändern).

Was ich aber wirklich nie mache ist kein Verzeichnis anzugeben, eben weil ich nie weiß wo die Daten dann landen bzw. gesucht werden ;-). Und das Verzeichnis mit ExtractFilePath(ParamStr(0)) anzugeben hat ja auch nix damit zu tun, dass es sonst zu lange dauert oder zu schwer ist, sondern das ist meistens eben Unwissenheit was dann eigentlich passiert, weshalb das viele weglassen.

Und es gibt ja auch genug Leute, die dann hier oder anderswo fragen, warum das (ohne Verzeichnisangabe) plötzlich nicht funktioniert. Eben weil z.B. nur mal ein Öffnen-Dialog aufgerufen wurde.