Startseite ¦  was ist neu ¦  programmier tips ¦  indy artikel ¦  intraweb artikel ¦  informationen ¦  links ¦  interviews ¦  sonstiges
kylix ¦  tutorials ¦  online shop ¦  fotos ¦  Add&Win Gewinnspiel


Willkommen Gast. Bitte einloggen oder registrieren.
21.05.2012, 12:47:01
Übersicht Hilfe Suche Einloggen Registrieren

+  SwissDelphiCenter Forum
|-+  German Forums
| |-+  Allgemeines Forum
| | |-+  Formular aus einer Komponente heraus sperren
« vorheriges nächstes »
Seiten: [1] Drucken
Autor Thema: Formular aus einer Komponente heraus sperren  (Gelesen 2224 mal)
downloads
Newbie
*
Offline Offline

Beiträge: 19



WWW
« am: 06.03.2002, 11:42:00 »

Hallo,

Ist es möglich ein Formular während der Laufzeit von einer Komponente aus zu sperren?
Ich habe ein Form1 auf dem ich die Komponente Detect1 eingebaut habe, wird die Funktion Detect1.Detect(); aufgerufen, so erschient ein Warte Formular (WaitForm) der Komponete, jetzt will ich das man keinen Zugriff auf das erste Formular Form1 hat. Dieses soll erst wieder freigegeben werden, sobald die Warte Zeit abgelaufen ist. ShowModal für das Warte forumlar kann ich auch nicht nehmen, denn dann läuft das Programm nicht weiter...
Gibt es eine Möglichkeit mit Owner oder Parent? um das Formular herauszufinden auf dem die Komponente eingefügt wurde??

Klar könnte ich vor dem Aufruf der Kompontenten Funktion self.Enabled auf False setzen und danach wieder auf True, aber in der Komponente eingebaut wäre mir lieber...

Besten Dank
Grüsse
Severin
Gespeichert
downloads
Newbie
*
Offline Offline

Beiträge: 19



WWW
« Antworten #1 am: 06.03.2002, 11:53:16 »

Habe mal folgendes Probiert:

if Owner Is TForm then
begin
 TForm(Owner).Enabled := False;
end;

Es funktioniert zwar, aber ist es aber auch erlaubt so?
Gespeichert
Simon Grossenbacher
Administrator
Sr. Member
*****
Offline Offline

Beiträge: 450


WWW
« Antworten #2 am: 06.03.2002, 13:21:19 »

Erlaubt ist das schon, die Frage ist nur ob es wirklich notwendig ist die Mainform zu disablen.

Poste doch mal bisschen mehr Code der Komponente, ev. lässt sich noch eine andere Möglichkeit finden.
Gespeichert

Simon Grossenbacher
downloads
Newbie
*
Offline Offline

Beiträge: 19



WWW
« Antworten #3 am: 06.03.2002, 14:01:39 »

Die Main Form muss ich eingentlich nicht unbedingt disabeln.

Sobald die Funktion meiner Komponente läuft, darf der User keine anderen Ding mehr im Main Formular tätigen.
Die Kompontene ermittelt die Seriellen Daten einer Waage (Baud, DataBits, Parity, etc...) während der Wartezeit erscheint ein Fenster mit einer Progressbar. Der Benutzer hat die Möglichkeit mit ESC abzubrechen.
Ich habe momenten das Owner Form auf Visible False gesetzt, so das der User nur noch das Form mit der Progressbar sieht.

Grüsse
Severin
Gespeichert
Philipp Hug
Newbie
*
Offline Offline

Beiträge: 10



« Antworten #4 am: 06.03.2002, 21:25:10 »

Am besten definierst du in der Komponente ein Event, das du auslöst, wenn der Status geändert wird.

z.B.

Code:

type

  // Die möglichen Zustände deiner Komponente

  TMyState = (msReady, msConnecting, msFailure);



  TOnStateChanged = procedure (Sender: TObject; newState: TMyState) of object;



  TMyComponent = class (TComponent)

  private

    FOnStateChanged: TOnStateChanged;

    procedure DoOnStateChanged (newState: TMyState);

  public

   procedure DoSomething;

   property OnStateChanged: TOnStateChanged read FOnStateChanged write FOnStateChanged;

  end;



// Methode, die das Event aufruft

procedure TMyComponent.DoOnStateChanged (newState: TMyState);

begin

  // Delphi Konvention

  if assigned (FOnStateChanged) then

    FOnStateChanged (newState);

end;



procedure TMyComponent.DoSomething;

begin

  // send state changed event

  DoOnStateChanged (msConnecting);

  // do your communiction

  Sleep(1000);

  //

  DoOnStateChanged (msReady);

end;

Gespeichert

Philipp Hug
Seiten: [1] Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006, Simple Machines LLC Prüfe XHTML 1.0 Prüfe CSS