![]() |
AW: Frame aus eigener Prozedur aufrufen
Zitat:
|
AW: Frame aus eigener Prozedur aufrufen
Sorry, wenn ich es jetzt mal sehr flapsig formuliere:
Du möchtest in der Prozedure, abhängig vom Inhalte einer Zeichenfolge, auf einen Frame zugreifen, ohne ihr den Frame bekanntzumachen. Das kann so erstmal nicht gehen. Zeig' bitte mal den Quelltext, in dem Du die Prozedure hast und die Frames, sonst stochern wir hier im Dunklen oder reden unnützt aneinander vorbei. Eventuell ist die Lösung ja ganz einfach, wenn man sieht, was Du bisher schon hast. |
AW: Frame aus eigener Prozedur aufrufen
Zitat:
|
AW: Frame aus eigener Prozedur aufrufen
Zitat:
Nur wie löse ich das, wenn ich den Quelltext dazu nicht kenne. Eventuell könnte eine Änderung der Prozedure in der Form
Delphi-Quellcode:
und ihre Aufnahme in die Private-Deklarationen der Formulars mit
procedure FormMain.CNCCommandBox(H:String);
Delphi-Quellcode:
ausreichen. Dann wird sie (vermutlich) auch alle Frames auf dem Formular kennen.
procedure CNCCommandBox(H:String);
Die Prozedure könnte dann eventuell so aussehen:
Delphi-Quellcode:
procedure FormMain.CNCCommandBox(H:String);
begin if (H ='A') then begin FrameA.visible:=true; FrameA.Left:=1; FrameA.Top:=2; FrameA.EditX.Text := 'A'; end else if (H ='B') then begin FrameB.visible:=false; FrameB.Left:=1; FrameB.Top:=2; FrameB.EditX.Text := 'A²'; end else if (H ='H') then begin FrameH.visible:=true; FrameH.Left:=192; FrameH.Top:=232; FrameH.EditX.Text := 'A³'; end; |
AW: Frame aus eigener Prozedur aufrufen
Ich kürz das mal etwas ab, damit ihr euch nicht durch den Quelltext kämpfen müsst:
Ich habe eine ListBox, die wird spaltenweise mit CNC-Code (für eine CNC-Fräse) befüllt. Das sieht dann in etwa so aus:
Code:
Beim Klicken auf diese Zeile wird der Frame aktiviert, der die jeweiligen Eingabefelder beinhalet, um die Werte X, Y, Z und Arbeitsfeld zu ändern. H gibt an, dass es sich um einen Header handelt, der die Plattenmaße auf der Fräse definiert.
H X=100 Y=100 Z=19 Arbeitsfeld A
Dann käme als nächstes z.B. die Zeile
Code:
G0 bedeutet dann "Start einer Fräsbahn".
G0 X=50 Y=50 Z=10 C=1 T=101
Meine Prozedur soll nun anhand der ausgelesenen ersten Zeichen (H, G0...) die ihr als Variabel übergeben wird, ermitteln welchen Frame sie zeigen soll und mit welchen Werten sie die auf dem befindlichen Frame gelegenen Eingabefeldern füllen soll. Ich habe Programmcode, der die Zeilen zerlegt und in die Werte aufteilt und der soll ebenfalls in der Prozedur laufen, da anhand des gewählten Frames auch leicht geänderter Code zum Zerlegen laufen soll, da der CNC Code, den ich aus der ListBox auslese, mal mehr und mal weniger Werte hat. |
AW: Frame aus eigener Prozedur aufrufen
Zitat:
Zitat:
|
AW: Frame aus eigener Prozedur aufrufen
nahpets Vorschlag hat funktioniert (sogar ohne Quelltext das Problem gelöst ;) )
allerdings heißt es
Delphi-Quellcode:
Vielen Dank!
procedure TFormMain.CNCCommandBox(H:String);
|
AW: Frame aus eigener Prozedur aufrufen
Wenn dir dieses
Delphi-Quellcode:
Schlangenmonster zu unhandlich wird, kannst du ja nochmal nachfragen, denn das geht auch insgesamt eleganter.
if else
|
AW: Frame aus eigener Prozedur aufrufen
OffTopic...
@Sir Rufo: zeigst du uns mal, wie du es lösen würdest? 8-) |
AW: Frame aus eigener Prozedur aufrufen
Grobes Rezept:
Delphi-Quellcode:
Vorteil: Ich brauche bei der Anzeige die konkrete Daten-/Frame-Klasse gar nicht kennen und kann die dadurch einheitlich behandeln.
var
LFrame: TFrame; LData: TPersistent; LFrame := FrameLookup.GetFrame( LData.ClassType ); LFrame.Assign( LData ); LFrame.Visible := True; // Eingabedaten aus Frame übernehmen LData.Assign( LFrame ); Neue Daten-/Frame-Klassen lassen sich so einfach hinzufügen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:17 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-2025 by Thomas Breitkreuz