![]() |
wert "durchreichen" ?
hallo zusammen,
ich habe eine Form mit einem Eingabefeld Tedit. Auf dem Form befindet sich auch eine Scollbox mit diversen Buttons. (Artikelgruppen) Beim Klick auf einen dieser Buttons wird (vom Artikelgruppenbutton) eine weitere Scollbox mit weiteren Buttons (Artikel) erzeugt und auf dem Form angezeigt. Beim Klick auf einen dieser Artikel-Buttons braucht dieser Artikel-Button den Wert der in besagtem Tedit steht um diesen in eine DB-tabelle einzutragen. Ohne Zirkelbezug muss ich den Wert durch alle übergelagerten Instanzen( also Scollbox, Button, scollbox) durchreichen um ihn in dem Button zur Verfügung zu haben, oder gibts noch ne andere Möglichkeit? Wie gesagt, Zirkelbezug möchte ich, wenn möglich vermeiden. danke für eure ideen Gruss KHH |
AW: wert "durchreichen" ?
Zitat:
|
AW: wert "durchreichen" ?
Du hast also nur eine einzige Form? Wieso greifst du dann nicht einfach auf das Edit zu? :gruebel:
|
AW: wert "durchreichen" ?
Zitat:
und Tbutton erzeugt beim Klick eine weitere Scollbox mit weiteren Buttons. Diese Buttons benötigen den Wert aus dem TEdit. |
AW: wert "durchreichen" ?
Zitat:
wie bekomme ich den Wert an den Button übergeben, von dem die Form ja gar nix weis :-( |
AW: wert "durchreichen" ?
Ich habe nach einer Ableitung gefragt; anscheinend reden wir aneinander vorbei:
Das ist eine (relativ sinnfreie) Ableitung von TButton:
Delphi-Quellcode:
Verwendest du also abgeleitete Controls?
type
TMySpezialButton = class(TButton) ... public property ArtkelNr:string ...; end; |
AW: wert "durchreichen" ?
Zitat:
ja, genau so. Dieser MySpezialbutton erzeugt eine Scollbox mit MyspezialArtikelButtons, die beim Klick eben jenen Wert aus dem TEdit benötigen. |
AW: wert "durchreichen" ?
Das ist mir gerade zu verwirrend ...
Ein Button erzeugt Controls, von denen er nicht der Parent ist? (Kann er ja auch nicht.) Wer ist denn nun der Owner dieser Controls, wer der Parent? |
AW: wert "durchreichen" ?
Zitat:
Parent der Scrollboxen ist jeweils das Form. parent der Buttons die zugehörende Scrollbox. |
AW: wert "durchreichen" ?
Wenn das Edit "Edit1" hieße, das Form "Form1" bzw. "TForm1" und der neue Button "ButtonNeu" (ja, verdammt kreativ, ich weiß), dann müsstest du doch von dem neuen Button aus so dorthin kommen:
Delphi-Quellcode:
TForm1(ButtonNeu.parent.parent).Edit1.Text
Mit dem ersten Parent bist du bei der Scrollbox, von da aus mit dessen Parent beim Form1 und dort findest du ja dann deine Edit-Komponente wieder. Bis denn Bommel |
AW: wert "durchreichen" ?
Ich will auch mal noch zu Missverständnissen beitragen... :wink:
Wenn Du eigene ScrollBoxen verwendest, könntest Du eine Eigenschaft UsesEdit einrichten und der Dein Edit zuweisen: MyScrollBox := TMyScrollBox.Create(Self); MyScrollBox.UsesEdit := Edit1; Innerhalb der Scrollboxereignisse kannst Du dann auf UsesEdit zugreifen. Alternativ könnte man eine globale Variable nutzen, wenn man mit den Protesten der Profi-Gemeinde leben kann. |
AW: wert "durchreichen" ?
Sorry, wenn ich das falsch verstehe, aber meine Idee:
Pseudocode!
Delphi-Quellcode:
procedure GruppenButtonWurdeGeklickt(const AEditText: string);
var li: integer; // Schleifenzaehler NewScrollBox: TScrollBox; begin NewScrollBox := CreateProductScrollboxWithButtons; for li := 0 to NewScrollBox.ComponentCount-1 do begin if (NewScrollBox.Components[li] is TProductButton) then begin TProductButton(NewScrollBox.Components[li]).StringProperty := AEditText; end; end; end; |
AW: wert "durchreichen" ?
Nur mal so ganz grundsätzlich:
Das Ableiten von Controls (visuelle Komponenten) ist von Ausnahmefällen abgesehen absolut nicht empfehlenswert. Man kann Objekte in zwei Kategorien einteilen: * unabhängig von der Anwendung * spezialisiert auf die Anwendung Controls (bzw. Komponenten allgemein) sind wie Legosteine; man kann sie unverändert in vielen versch. Projekten einsetzen. Daneben gibt es aber auch eigene Klassen (sog. ![]() Was hier in deinem Projekt wahrscheinlich fehlt ist eine Artikel-Klasse. Diese Objekte tragen die Informationen (z.B. Artikelnummer, Beschreibung, DB-Schlüssel, Status,...) und werden zwischen den Formularen ausgetauscht. Wenn du diese Artikel-Klasse in eine eigene Unit packst, dann kannst du Artikelobjekte problemlos zu versch. Formularen durchreichen. Neben einer Artikel-Klasse wirst du möglicherweise weitere Klassen benötigen: Artikelliste, Artikelgruppe. Die einzigen Komponenten, die anwendungsspezifisch abgeleitet werden dürfen sind: TForm und TFrame. |
AW: wert "durchreichen" ?
Zitat:
|
AW: wert "durchreichen" ?
Zitat:
ich danke euch |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:51 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