AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Knopfdruck Formübergreifend behandeln

Ein Thema von rhodan · begonnen am 4. Mai 2014 · letzter Beitrag vom 5. Mai 2014
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von rhodan
rhodan

Registriert seit: 4. Okt 2005
Ort: Hamburg
150 Beiträge
 
Delphi 7 Personal
 
#1

Knopfdruck Formübergreifend behandeln

  Alt 4. Mai 2014, 08:42
hallo!

ich bin gerade dabei ein tutorial zu programmieren welches in einer eigenen form angezeigt wird.
In einem gewissen Schritt fordere ich den Benutzer auf per Knopfdruck (auf dem hauptformular) einen neuen Mitarbeiter anzulegen.
Das problem ist, ich krieg es auf der Tutorialform nicht mit wenn dieser button gedrückt wurde, um den nächsten schritt im tutorial einzuleiten...die mainform heisst 'form2' die andere 'tutorial'.
ich hab von von

Delphi-Quellcode:
if Sender is form2.neuermitarbeiter then
tut3.show
über

if form2.neuermitarbeiter.click=true then
sowie

if (Sender is form2.neuermitarbeiter) then
ein bischen was ausprobiert, ich kriegs irgendwie nicht hin :S
ich mache das in einer timer routine alle 500ms..wie prüfe ich ob der user auf form2 einen bestimmten button gedrückt hat??!

danke für die hilfe...
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Knopfdruck Formübergreifend behandeln

  Alt 4. Mai 2014, 10:02
Das geht leider nicht, denn es wird nirgendwo vermerkt, dass ein Button gedrückt wurde.

In dem Moment des Drückens wird eine Nachricht verschickt auf die der Button dann reagiert und das Ereignis OnClick auslöst.

Du kannst jetzt versuchen auf diese Nachricht zu lauschen oder dein Tutorial im OnClick des Buttons zu informieren oder selber in der Form einen Status merken oder ...
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Knopfdruck Formübergreifend behandeln

  Alt 4. Mai 2014, 10:08
Hier würden dir Events weiterhelfen.
Entweder abonnierst du auch in Form2 das OnClick Event des Buttons in Form1 oder du definierst dir ein eigenes Event, das ausgelöst wird, sobald du den Button klickst.

Quellcode Form1:
Delphi-Quellcode:
private
  FOnButtonClick: TNotifyEvent
public
  property OnButtonClick: TNotifyEvent read FOnButtonClick write FOnButtonClick;
...

procedure Form1.ButtonClick(Sender: TObject);
begin
  if Assigned(FOnButtonClick) then
    FOnButtonClick(Sender);
end;

Quellcode Form2:
Delphi-Quellcode:
procedure Form2.Form2Show(Sender: TObject);
begin
  Form1.OnButtonClick := ClickEventHandler;
end;

procedure Form2.ClickEventHandler(Sender: TObject);
begin
  // Nächster Tutorial Schritt einleiten
end;
Der Quellcode ist nur so runtergeschrieben und nicht getestet. Es ist möglich, dass Fehler drin sind. Schau dir aber bitte trotzdem das Tutorial auf Delphi-Treff an, damit du verstehst, was genau hier passiert. Mein Beispiel soll nur als Grundlage bzw. als Anfang dienen.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#4

AW: Knopfdruck Formübergreifend behandeln

  Alt 4. Mai 2014, 13:19
Das mit den Events ist schon eine gute Richtung. Eine Möglichkeit über alle Formen zu agieren wäre z. B. es mit Messages zu machen. Hier ein kleines Beispiel:
Delphi-Quellcode:
unit Unit1;

interface

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

const
  WM_FORM2_BTN1_MSG = WM_USER + 1; //<<<<<<<<<

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    procedure WMForm2Btn1(var Msg : TMessage); message WM_FORM2_BTN1_MSG; //<<<<<<<<<
...

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.WMForm2Btn1(var Msg : TMessage); //<<<<<<<<<
begin
  ShowMessage('Hallo, hier ist Form2');
end;
Nun der Aufruf aus der Form2
Delphi-Quellcode:
unit Unit2;

...

implementation

{$R *.dfm}

uses
  Unit1;

procedure TForm2.Button1Click(Sender: TObject);
begin
  SendMessage(Form1.Handle, WM_FORM2_BTN1_MSG, 0, 0); //<<<<<<<<<
end;
Du kannst bei einem Event eine Message mit abschicken. Unter normalen Umständen kann sie ignoriert werden, wenn du aber im Tutorial-Modus bist, kannst du sie auswerten.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#5

AW: Knopfdruck Formübergreifend behandeln

  Alt 4. Mai 2014, 13:28
Auf diese Art und Weise hast Du aber zirkuläre Referenzen zwischen erster und zweiter Unit. Da wäre es doch besser, z.B. im versendenden Formular eine Liste von Fensterhandles vorzuhalten (in Form einer Property), in die sich die interessierten Formulare eintragen können. Diese Liste arbeitet das Formular dann einfach ab. Somit müssen zwar die Units der interessierten Formulare jeweils Unit2 einbinden, aber nicht anders herum.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Knopfdruck Formübergreifend behandeln

  Alt 4. Mai 2014, 13:33
Nun ich persönlich habe dafür einen Messenger wo sich jeder für eine spezielle Message eintragen/austragen kann. Allen Beteiligten ist nur der Messenger bekannt und dadurch gibt es keine Abhängigkeiten ausser mit dem Messenger.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#7

AW: Knopfdruck Formübergreifend behandeln

  Alt 4. Mai 2014, 13:51
Auf diese Art und Weise hast Du aber zirkuläre Referenzen zwischen erster und zweiter Unit.
Das es besser geht, stimme ich dir zu. Es ist auch nicht die Lösung. Vielmehr soll dieses Beispiel vorerst nur die Idee nennen wie es gehen könnte.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Knopfdruck Formübergreifend behandeln

  Alt 4. Mai 2014, 13:57
Heute hat jemand geschrieben, dass wenn man schon eine Antwort liefert, diese korrekt sein sollte.
Markus Kinzler
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#9

AW: Knopfdruck Formübergreifend behandeln

  Alt 4. Mai 2014, 14:10
Eine Antwort, von korrekt war nicht die Rede.
  Mit Zitat antworten Zitat
Benutzerbild von rhodan
rhodan

Registriert seit: 4. Okt 2005
Ort: Hamburg
150 Beiträge
 
Delphi 7 Personal
 
#10

AW: Knopfdruck Formübergreifend behandeln

  Alt 4. Mai 2014, 18:52
dankeschön habs hinbekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 19:54 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