Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Anzeige der Nebenform vor der Hauptform (https://www.delphipraxis.net/61993-anzeige-der-nebenform-vor-der-hauptform.html)

marabu 29. Jan 2006 17:19

Re: Anzeige der Nebenform vor der Hauptform
 
Der Button wird durch deinen Code nicht gedrückt, nur die Routine ButtonClick() wird ausgeführt. Das sollte kein Problem bereiten. Wahrscheinlich hast du irgendwo deinen Code nicht aufgeräumt - nach den vielen Änderungen. Ich habe dein Problem nochmal nachgestellt, allerdings ohne deine Komponentennamen. Über Sinn und Unsinn deiner Vorgehensweise möchte ich mir besser keine Gedanken machen.

Delphi-Quellcode:
unit SpecialFrm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IniFiles;

type
  TSpecialForm = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    ini: TMemIniFile;
  public
  end;

var
  SpecialForm: TSpecialForm;

implementation

{$R *.dfm}

const
  Password = 'hallo';

procedure TSpecialForm.Button1Click(Sender: TObject);
begin
  if Edit1.Text = Password then
  begin
    ini.WriteString('Abschnitt', 'Eintrag', Edit1.Text);
    ini.UpdateFile;
    ModalResult := mrOK;
  end else ShowMessage(Password);
end;

procedure TSpecialForm.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
begin
  if Edit1.Text = Password
    then ModalResult := mrOK
    else ModalResult := mrCancel;
end;

procedure TSpecialForm.FormCreate(Sender: TObject);
var
  fn: TFileName;
begin
  fn := ChangeFileExt(ParamStr(0), '.ini');
  ini := TMemIniFile.Create(fn);
  Edit1.Text := ini.ReadString('Abschnitt', 'Eintrag', '');
  Button1Click(nil);
end;

procedure TSpecialForm.FormDestroy(Sender: TObject);
begin
  ini.Free;
end;

end.
marabu

Avax2k 29. Jan 2006 17:31

Re: Anzeige der Nebenform vor der Hauptform
 
habe gerade alles nochmal nachgeprüft und sogar gegen deinen Code ersetzt

Ergebnis

der Knopf wird immer noch nicht gedürckt..ich muss immer selbst drücken :(

wenn ich in Button1Click(Button1) oder Button1Click(nil) mache geht es einfach nicht

marabu 29. Jan 2006 17:52

Re: Anzeige der Nebenform vor der Hauptform
 
Ich habe doch geschrieben - der Knopf wird nicht gedrückt, aber der Code wird ausgeführt. Was erwartest du denn? Dass die Form automatisch geschlossen wird? Bedenke, dass du das ModalResult im OnCreate setzt. Zu diesem Zeitpunkt ist das noch zu früh.

marabu

Avax2k 29. Jan 2006 17:55

Re: Anzeige der Nebenform vor der Hauptform
 
achso das soll bedeuten, dass was ich vorhabe, dass das Fenster sich automatisch schließt wenn alles stimmt ist unmöglich ?? und es muss obe man will oder nicht der Knopf gedrückt werden ??

wenn ja dann ist ja das alles was ich mit deiner Hilfe erstellt habe ja vollkommen nutzlos :(

außerdem verstehe ich das nicht...dass doch die Knopfprocedur ausgelöst wird wenn eben nichts in der ini steht..dann kommt die Meldung mit dem Fenster... wieso geht das dann nicht weiter wenn etwas drin steht ist doch das gleiche Prinzip und onCreat showmodal gesetzt und da geht es :wall:

marabu 29. Jan 2006 18:21

Re: Anzeige der Nebenform vor der Hauptform
 
Warum muss denn dein Fenster noch aufgehen, wenn alles schon stimmt? Da ist die Sache doch schon wurmig. Und dass ShowMessage() funktioniert, wenn du die ButtonClick Routine rufst. Das beweist, dass diese Routine aus dem OnCreate ausgeführt wird. Auch der Zweig, in dem du ModalResult setzt, wird ausgeführt - er bleibt zu diesem Zeitpunkt nur ohne Wirkung, weil der Wert erst später initialisiert und ausgewertet wird. Deine Form ist noch nicht modal zu diesem Zeitpunkt.

Vielleicht kannst du dich ja doch noch mit meinem Vorschlag aus der Demo anfreunden.

marabu

Avax2k 29. Jan 2006 18:35

Re: Anzeige der Nebenform vor der Hauptform
 
hab es nun mit einem Timer hinbekommen NUR dieser löst den Knopf ja in einem bestimmten Intervall aus.. werde versuchen da irgendwas zu ändern sodass er gar nciht aktiviert wird, wenn das Editfeld leer ist.. aber das ist denke ich, wenn dann ein anderer Topic.

Vieln super herzlichen Dank für deine wirklich sehr gute Unterstützung Marabu!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:33 Uhr.
Seite 3 von 3     123   

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