AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Form Automatsch öffnen, wenn ein User es möchte!
Thema durchsuchen
Ansicht
Themen-Optionen

Form Automatsch öffnen, wenn ein User es möchte!

Ein Thema von m-werk · begonnen am 17. Jun 2002 · letzter Beitrag vom 21. Jun 2002
Antwort Antwort
Seite 3 von 3     123   
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#21
  Alt 18. Jun 2002, 11:37
Aber nur, wenn du vorher die Variable auf nil setzt, wenn sie nicht global oder in einer Klasse deklariert ist. Und selbst Borland sagt, dass das nicht gerade der schönste und übersichtlichste Programmierstil ist.
  Mit Zitat antworten Zitat
Benutzerbild von thomasdrewermann
thomasdrewermann

Registriert seit: 8. Jun 2002
Ort: Herne
575 Beiträge
 
Delphi 3 Professional
 
#22
  Alt 18. Jun 2002, 13:02
Teste mal:
Code:
procedure TKundendaten.FormCreate(Sender: TObject);
begin
  load_inifile;
  if ExtraForm.CheckBox1.Checked=true Then GeburtsdatumClick(sender);
end;
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#23
  Alt 18. Jun 2002, 13:23
Der Fehler liegt im Vergleich von Now mit dem zusammengesetzten Datum. Wenn er sein Programm genau um 0:00 Uhr startet, dann funktioniert es. Anstatt Now muss Date verwendet werden. Es sollten auch alle Datensätze durchlaufen werden, und nicht nur der aktuell ausgewählte.

Lösung:
Code:
procedure TKundendaten.GeburtsdatumClick(Sender: TObject);
var
  i, r: Integer;
  s: string;
begin
  r := DM.ADOSHaupt.RecNo;
  for i := 1 to DM.ADOSHaupt.RecordCount do
  begin
    DM.ADOSHaupt.RecNo := i;
    s := Copy(DM.ADOSHaupt.FieldByName('Geburtsdatum').AsString, 1, 6);
    if (StrToDate(s + Copy(DateToStr(Date + 7), 7, 4)) <= Date + 7) and
       (StrToDate(s + Copy(DateToStr(Date), 7, 4)) >= Date) then
    begin
      DM.ADOSHaupt.Filtered := True;
      ExtraForm.Show;
    end;
  end;
  DM.ADOSHaupt.RecNo := r;
end;
  Mit Zitat antworten Zitat
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#24
  Alt 19. Jun 2002, 22:34
Hi, ich habe jetzt den Code vom Button so wie oben beschrieben eingebaut. Der Button funktioniert zwar, aber die ExtraForm öffnet sich noch immer nicht automatisch beim start.

Da wir ja gerade dabei sind, auch den Code vom Geburtstag zu ändern, zeige ich jetzt euch noch den Code, der in dem Datenmodul 'DM' steht, wo ich dann filtere:

Code:
procedure TDM.ADOSHauptFilterRecord(DataSet: TDataSet;                        
  var Accept: Boolean);
begin
if (StrToDate(Copy(ADOSHaupt.FieldByName('Geburtsdatum').AsString,0,6)+Copy(DateToStr(now),7,4))<=now+7)
and (StrToDate(Copy(ADOSHaupt.FieldByName('Geburtsdatum').AsString,0,6)+Copy(DateToStr(now),7,4))>now)
then Accept :=true
else Accept :=false;
end;
Was kann ich da nur noch tun?
Grüße, m-werk
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#25
  Alt 20. Jun 2002, 00:44
Nimm mal anstatt Now die Funktion Date. Und bessere auch gleich das Copy(..., 0, 6) in Copy(..., 1, 6) aus
  Mit Zitat antworten Zitat
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#26
  Alt 20. Jun 2002, 13:29
Hi, werd ich heute abend mal probieren.

Was ist jetzt aber mit dem Geburtsdatum.Click oder GeburtsdatumClick(sender)

Ich werd mal probieren, diese procedure in onActivate hineinzustellen.
Ich habe aber fast die befürchtung, dass da dann, wenn die checkbox angewählt ist, wieder eine Meldung von Onhide und so kommen wird.

Ich habe es ja vorher auch bei onActivate gehabt. Da hat sich die Form automatisch beim start dann geöffnet. nur habe ich eine Meldung gehabt. So in der Art, dass die form im onhide nicht geändert werden kann.

Kann ich sonst anstelle von onShow und onActivte noch was anderes probieren?
Grüße, m-werk
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#27
  Alt 20. Jun 2002, 14:22
In OnActivate würde ich das in dem Fall nicht stecken: Lies mal dieses dazu. Aber es gibt noch OnShow.
  Mit Zitat antworten Zitat
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#28
  Alt 20. Jun 2002, 16:32
Danke für die INFO. Genau solche Beschreibungen können jemanden weiterhelfen, der sich nicht richtig im Code-tschungel auskennt.

Aber trotzdem: das mit dem onShow hab ich ja immer gemacht. Da ist ja das problem. Ich bekomme die Form nicht automatisch beim Start auf. (siehe postings weiter oben).
Grüße, m-werk
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#29
  Alt 20. Jun 2002, 17:31
Ändere mal den Code in GeburtsdatumClick so um:
Code:
procedure TKundendaten.GeburtsdatumClick(Sender: TObject);
var
  i, r: Integer;
  s: string;
begin
  ExtraForm.Show;
  Exit;

  r := DM.ADOSHaupt.RecNo;
  for i := 1 to DM.ADOSHaupt.RecordCount do
  begin
    DM.ADOSHaupt.RecNo := i;
    s := Copy(DM.ADOSHaupt.FieldByName('Geburtsdatum').AsString, 1, 6);
    if (StrToDate(s + Copy(DateToStr(Date + 7), 7, 4)) <= Date + 7) and
       (StrToDate(s + Copy(DateToStr(Date), 7, 4)) >= Date) then
    begin
      DM.ADOSHaupt.Filtered := True;
      ExtraForm.Show;
    end;
  end;
  DM.ADOSHaupt.RecNo := r;
end;
Die Warnungen die der Compiler ausspuckt kannst du ignorieren.
Starte dein Programm. Wenn jetzt die ExtraForm angezeigt wird, dann stimmt etwas mit der if-Anweisung nicht, oder du hast keine Datensätze mit den passenden Geburtsdaten.
  Mit Zitat antworten Zitat
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#30
  Alt 21. Jun 2002, 19:16
So, nun habe ich den Code umfunktioniert, so wie oben beschrieben.

Weiters habe ich im DataModul (DM) den Code beim Filtern auch umgeschrieben.

Code:
procedure TDM.ADOSHauptFilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
  if (StrToDate(Copy(ADOSHaupt.FieldByName('Geburtsdatum').AsString,1,6)+Copy(DateToStr(Date),7,4))<=Date+7)
  and (StrToDate(Copy(ADOSHaupt.FieldByName('Geburtsdatum').AsString,1,6)+Copy(DateToStr(Date),7,4))>Date)
  then Accept := true
  else Accept := false;
end;
Die ExtraForm öffnet sich aber noch immer nicht

Und wenn ich jetzt auf den Geburtstagsbutton klicke, sehe ich jetzt auf einmal ALLE Leute, egal ob diese in der Woche Geburtstag haben oder nicht. Das hängt jetzt mit dem ExtraForm.Show; Exit; zusammen. Wenn ich das weglasse, funktioniert es. Wenn ich es dazugebe, sehe ich alle Leute.

Warum lässt sich die ExtraForm nicht öffnen.
Langsam aber sicher verzweifle ich dabei noch!

Wie sieht es denn eigentlich aus, wenn man das mit der ExtraForm über die Registry löst?

PS: Ich habe gesehen, dass bei der ExtraForm 'Visible' auf false war. Dann habe ich es auf True gesetzt. Mit dieser Art habe ich dann kurz die ExtraForm gesehen aber dies hat auch nichts geholfen. So habe ich Visible wieder auf false gesetzt.
Grüße, m-werk
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz