Autor Beitrag
recall
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 449



BeitragVerfasst: Fr 05.09.03 19:10 
Hallo,

Folgende Situation für einen Interpreter, den ich schreiben will:
Ich habe eine Kompo erzeugt (kann irgendein TControl sein !).
Jetzt will ich auf die Eigenschaften zugreifen (in meinem Proggi nachher), dazu will ich eine Funktion haben, die halt folgendes kann:
ausblenden Delphi-Quelltext
1:
 procedure SetProperty('Panel1.Caption', 'Hallo');					

Also der Egenschaft Panel1.Caption wird 'Hallo' zugewiesen.
Das muss aber mit allen Eigenschaften von allen TWinControl gehen :( !
Also es kann auch folgendes vorkommen:
ausblenden Delphi-Quelltext
1:
SetProperty('Image1.Bitmap.Canvas.Brush.Color', clBlack);					

Beachtet bitte, dass beide Werte als String, bzw der zweite als variant oder sonstwas da steht ! (Der erste ist aber auf jeden Fall ein String!)

Nun hatte ich gedacht, z.B. TCaption ist ja auch ein Object, also müsste man es doch finden können (FindObject=gibts nur bei clx, habe vcl), aber wie ? Also z.B. FindObject(Panel1.Caption) ??

Wer kann mir helfen (bitte, es eilt ein wenig).
Vielen Dank im voraus.

Viele Grüsse.

//Edit: Ich stelle vielleicht konkretere Fragen:
- Wie kann ich so eine "FindObject"-Prozedur hinkriegen ?
- Es gibt ja Eigenschaften von Kompos, die sind var, property, procedure und function ??? Da habe ich ja schlechte Karten mit meinem Variant.
Nun gut, es sind nur 4 verschiedene, die kann ich proggen (gibts halt 4 Funktionen), aber die "FindObject" muss ja auch z.B. prozeduren finden: zB.: SetProperty('Panel1.OnClick', ???);

...Und natürlich brauche ich auch eine Funktion GetProperty( !!! ); ;)


Moderiert von user profile icontommie-lie: Code- durch Delphi-Tags ersetzt


Zuletzt bearbeitet von recall am So 07.09.03 01:50, insgesamt 1-mal bearbeitet
recall Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 449



BeitragVerfasst: Sa 06.09.03 19:30 
na, will keiner die Herausforderung annehmen ?
Weiss keiner was :bawling: ?

Viele Grüsse.
recall Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 449



BeitragVerfasst: So 07.09.03 00:10 
Hallo,

ich habe rausgefunden, dass es etwas mit:
ausblenden Delphi-Quelltext
1:
IOTAComponent					

zu tun hat, nur komme ich damit nicht klar. Kann sich mal ein schlauer Mensch die Hilfe dazu angucken ? Ich werd' nicht schlau draus !

Also ich habe:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
var
  O: IOTAComponent;
  N: IOTAFormEditor;
begin
  O := N.FindComponent('Form1');
  O.SetPropByName('Left', I);
usw...
versucht, aber bereits bei N.FindComponent murkst er :(
Ist ja auch klar, aber IOTAFormEditor.FindComponent() macht er nicht:
Zitat:
Klasse erforderlich.

Wer kann mir helfen ??? Was hat es mit dem IOTA-Krams auf sich ???
Bin ich auf dem falschen Weg ???

Im internet habe ich folgendes gefunden:
Zitat:
IOTAComponent
Component interface. The following methods raise access violations if you try to use them:
Delete
Focus
GetChildren
GetParent
Select
SetProp
SetPropByName

INTAComponent
Cast an IOTAComponent interface to INTAComponent to get a native interface, which lets you access the component instance directly. Once you have the component reference, you can do anything you want.
Nur leider versteh ich es nicht so ganz. Was muss ich tun ?

Viele Grüsse.
recall Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 449



BeitragVerfasst: So 07.09.03 01:53 
Hab mir den code von www.tsoft.szm.sk/download.htm geholt, ist nach einiger Zeit verständlich.
Dank an alle, die mein Posting gelesen haben, aber dann doch verzweifelnd wieder abzogen...