AGB  ·  Datenschutz  ·  Impressum  







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

UI Nachrichtenverarbeitung in mehreren Units/Klassen

Ein Thema von optiman · begonnen am 13. Apr 2016 · letzter Beitrag vom 14. Apr 2016
Antwort Antwort
optiman

Registriert seit: 29. Nov 2004
Ort: Penzberg
4 Beiträge
 
#1

UI Nachrichtenverarbeitung in mehreren Units/Klassen

  Alt 13. Apr 2016, 17:32
Hallo,

ich verwende Delphi 10 Seattle zur Entwicklung einer Windows Desktop Applikation mit VCL.

Meine Haupt-Form enthält UI-Elemente (Menü, Button, Edit usw).
Ich möchte nun Gruppen von UI-Elementen in eigenen Klassen abarbeiten.
Die Menünachrichten sollen also in der Klasse TUiMenu in der Unit UiMenu verarbeitet werden.
Ein logisch zusammengehörender Satz von Button, Edit, Combobox soll auch in einer eigenen Unit verarbeitet werden.
So werden die einzelnen Klassen kleiner und übersichtlicher.

Geht das? Wie?
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.191 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: UI Nachrichtenverarbeitung in mehreren Units/Klassen

  Alt 13. Apr 2016, 17:55
Hallo und Herzlich Willkommen in den Heiligen Hallen des Wissens und des Wahnsinns.

Du meinst "Frames", oder?

http://docwiki.embarcadero.com/RADSt...rames_arbeiten

Du bearbeitest einen Frame fast exakt wie ein Formular, kannst aber, neben Buttons, Edits und all dem, auch Frames auf dein Formular (oder Frame) werfen. Deinem Frame kannst du im Code-Editor wieder öffentliche Methoden und Eigenschaften verpassen welche du vom Formular aus nutzen kannst.
  Mit Zitat antworten Zitat
optiman

Registriert seit: 29. Nov 2004
Ort: Penzberg
4 Beiträge
 
#3

AW: UI Nachrichtenverarbeitung in mehreren Units/Klassen

  Alt 13. Apr 2016, 18:51
Danke für die schnelle Antwort.

Also ein neues Frame erzeugt (Frame_1). Da ist jetzt ein TEdit (Edit1) drauf.

Das Frame (Frame_1A) lege ich in meine MainForm.

OnChange für Edit1 wird nun in der MainForm verarbeitet.
(procedure TMainForm.Frame1AEdit1Change(Sender: TObject))

Wenn man mehrere Instanzen der Form hat (also auch ein Frame_1B), dann scheint das ja sinnvoll.

Wenn ich 10 Forms mit je 10 Controls auf meine MainForm packe, habe ich mindestens 100 Ereignismethoden in der MainForm.

Die Form soll selbst wissen, was sie bei einem Ereignis zu tun hat, soll also selbst auf die Nachricht reagieren. Das geht nicht.

Wie kann ich aus der MainForm die Nachricht an den Frame leiten? Das würde ja auch helfen.
optiman
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

AW: UI Nachrichtenverarbeitung in mehreren Units/Klassen

  Alt 13. Apr 2016, 19:57
Du kannst das Event doch einfach im Frame setzen statt im Formular.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
optiman

Registriert seit: 29. Nov 2004
Ort: Penzberg
4 Beiträge
 
#5

AW: UI Nachrichtenverarbeitung in mehreren Units/Klassen

  Alt 13. Apr 2016, 23:13
Das OnChange wird leider nicht an den Frame durchgereicht.

MainForm ohne Eventhandler
Code:
  TMainForm = class(TForm)
    Frame1A: TFrame1;
  end;

Frame mit nie gerufenem Eventhandler
Code:
  TFrame1 = class(TFrame)
    Edit1: TEdit;
    procedure Edit1Change(Sender: TObject);
  end;

...

procedure TFrame1.Edit1Change(Sender: TObject);
begin
    // Wird nie gerufen
    // Edit1.Text verarbeiten
end;
Was mache ich falsch?
optiman
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.869 Beiträge
 
Delphi 12 Athens
 
#6

AW: UI Nachrichtenverarbeitung in mehreren Units/Klassen

  Alt 14. Apr 2016, 03:18
Der Eventhandler, den du im Frame zugewiesen hast, steht bei OnChange beim Edit aber noch drin?
Nicht dass du den jetzt im Formular quasi deaktiviert hast. Am einfachsten siehst du das im Formularquelltext (Alt + F12 in der Formularansicht). Da sollte OnChange nicht auftauchen. Nur im Frame.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.305 Beiträge
 
Delphi 12 Athens
 
#7

AW: UI Nachrichtenverarbeitung in mehreren Units/Klassen

  Alt 14. Apr 2016, 03:22
Frames sind klasse, aber haben auch so ihre Macken.

Geh mal im TMainForm in die Textansicht. (Rechte Maustaste auf das Form und dann "Ansicht als Text)

Schau mal ob dort Edit1Change=nil steht. Wenn ja, dann einfach herauslöschen.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Antwort Antwort


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 11:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz