Avatar billede ossi Nybegynder
28. april 2002 - 15:10 Der er 32 kommentarer og
1 løsning

Strings og... ja -- komponenter!

Harj,

Jeg har noget kode som ser sådan her ud:

(Self.Components[II] as TLabel).Caption := Cut.SelText;

den kode vil jeg gerne gøre lidt mer fleksibel...

Hvis jeg nu har to Strings: TheType og TheProperti...

Og så ændre den til noget i stil med:

(Self.Components[II] as TheType).TheProperti := Cut.SelText;

Men det går ikke!!

hvis der er nogle der forstår mig så kom endelig med en løsning!

[.:saBA:.]
Avatar billede cms Nybegynder
28. april 2002 - 15:26 #1
Du kan gøre noget af det, således:

type
  TComponentClass = class of TComponent;
var
  ClassType: TComponentClass;
begin
  ...
  ClassType := TLabel;
  ...
  (Components[I] as ClassType).Caption := Cut.SelText;
Avatar billede cms Nybegynder
28. april 2002 - 15:29 #2
Ellers skal du have fat i IDispatch ;-)
Avatar billede ossi Nybegynder
28. april 2002 - 15:40 #3
Løsning 1 er jo lidt kompliceret...

Kan det gøres anderledes?!
Avatar billede cms Nybegynder
28. april 2002 - 15:45 #4
Er du igang med at lave noget scripting?
Avatar billede ossi Nybegynder
28. april 2002 - 15:57 #5
Hmm...

Nej...

jeg arbejder på at lave noget Sprog funktion til et af mine programmer... Jeg ved godt at jeg sikkert kan finde noget bedre på nettet, men vil altså gøre det selv :)

Mangler kun lige det der!!
Avatar billede cms Nybegynder
28. april 2002 - 16:10 #6
Ja okay. Tænkte det nok. Jeg kigger på det
Avatar billede cms Nybegynder
28. april 2002 - 16:12 #7
du inkluderer blot unitet TypInfo i din uses og skriver så:

SetStrProp(Components[I], 'Caption', Cut.SelText);
Avatar billede cms Nybegynder
28. april 2002 - 16:15 #8
Hvis du kan bruge det, må jeg så se dit program? :)
Avatar billede ossi Nybegynder
28. april 2002 - 16:18 #9
ok...

prøver lige!!
Avatar billede ossi Nybegynder
28. april 2002 - 16:22 #10
Jeg kan ikke lige tjekke det nu... Du må få point en anden dag!!

ses!!
Avatar billede cms Nybegynder
28. april 2002 - 16:24 #11
Æv. Nå fair nok :) Go' søndag
Avatar billede ossi Nybegynder
28. april 2002 - 18:34 #12
Det virker ike...

String og PPropInfo er ikompitible typer!!!

PLZ HELP!!!
Avatar billede doc404 Novice
28. april 2002 - 19:24 #13
Er det for at kunne ændre sprog på skærmtekster,menuer etc?
Avatar billede ossi Nybegynder
28. april 2002 - 20:49 #14
ja, Det er til at ændre sådanne ting....
Avatar billede cms Nybegynder
28. april 2002 - 21:27 #15
Må jeg se den kode, du har skrevet? For ovenstående SKAL virke.
Avatar billede ossi Nybegynder
28. april 2002 - 21:54 #16
Jag har skrevet set som der står i eksemplet...
jeg bruger D4...
Kan det være det??
Får beskeden Incompatible types:
String and PPropInfo...
Avatar billede cms Nybegynder
28. april 2002 - 21:57 #17
Det kan sagtens være det. Jeg har D5. Prøv at finde stedet hvor funktionen SetStrProp står i TypInfo.pas og vis mig parametrene (eller find det i hjælp-filen) så skal jeg nok tilrette den
Avatar billede ossi Nybegynder
28. april 2002 - 22:28 #18
jeg ejer ikke pas filerne da det er en standard version...
Og i hjælpen står der ikke noget...
Den kender ikke funktionen...
Men de burde være:
Instance:

TObjekt:
PropInfo:
PPropInfn;
const Value:
String
Avatar billede cms Nybegynder
28. april 2002 - 22:36 #19
Så gør du bare sådan:

SetStrProp(Components[I], GetPropInfo(Components[I], 'Caption'), Cut.SelText);
Avatar billede ossi Nybegynder
29. april 2002 - 14:45 #20
Den nye kode virker hellerikke...
den siger
Incompatible types:
TComponent
and
PTypeInfo
Avatar billede cms Nybegynder
29. april 2002 - 16:34 #21
hvor henne?
Avatar billede ossi Nybegynder
29. april 2002 - 20:38 #22
I det nye kode der er tilføjet...
Den godtager ikke Components i den nye funktion...
Avatar billede cms Nybegynder
29. april 2002 - 20:53 #23
Jaja. Men hvor på linjen skriver den fejlen?
har du ikke icq? #145242780
Avatar billede ossi Nybegynder
30. april 2002 - 06:48 #24
Med den fejl der kommer er det jo mest logisk at det er efter Components...
Det er jo det den ikke vil godtage!!

Forresten så er han her ikke selv. (ossi) jeg skriver bare for ham fordi han ikke kan kommer på internettet før på fredag....
Og jo, han har ICQ.
Avatar billede cms Nybegynder
30. april 2002 - 17:45 #25
Mit spørgsmål var (i hvertfald før det kom ud af min mund) netop efter hvilken af de to components[i] det var. Anyway så kigger jeg lige i 'kildekoderne' til d4ent og ser hvordan lortet skal kigge ud.
Avatar billede cms Nybegynder
30. april 2002 - 17:47 #26
okay fundet! jeg ved ikke om følgende vil virke:

SetStrProp(Components[I], GetPropInfo(TypInfo(Components[I]), 'Caption'), Cut.SelText);

ellers skal du bruge:
SetStrProp(Components[I], GetPropInfo(TypInfo(TWinControl), 'Caption'), Cut.SelText);
Avatar billede ossi Nybegynder
30. april 2002 - 21:55 #27
Der er også fejl i den nye kode!!
Lige efter TypInfo siger den:
expected but ( found...
Det er altså provo!!
Avatar billede cms Nybegynder
01. maj 2002 - 00:58 #28
Jeg har altså ikke lyst til at installere Delphi4 igen...
den skriver ikke "expected but ( found", den skriver "expected ... but ( found". Hvad expecter den?
Anyway så mangler der jo helt øjensynligt nogle funktioner som først er kommet til i D5. Jeg kan jo lave dig en dll med tilhørende d5 source, eller en bpl, eller ocx, si tu veux.
Avatar billede ossi Nybegynder
01. maj 2002 - 14:28 #29
Det er nu den rigtige Ossi der skriver :)

Den skrev "Expected . (punktum) but ) found"...

Ja lav lige en DLL eller noget... Det villge være dejligt!!!

Jeg mangler som sagt KUN lige det der til sprog-funktionen...!
Avatar billede cms Nybegynder
01. maj 2002 - 15:31 #30
function SetComponentProperty(Component: TObject; PropName, PropVal: PChar): Boolean; external 'DynamicProperty.dll';

procedure TForm1.Button1Click(Sender: TObject);
begin
  SetComponentProperty(Label1, 'Caption', 'Hejsa');
end;

og dll-filen:
http://e.dyndns.dk/Download/DynamicProperty.zip
Avatar billede cms Nybegynder
01. maj 2002 - 15:36 #31
Nu lavede jeg squ et unit til dig:
http://e.dyndns.dk/Download/unit1.zip
Det burde virke med alle Delphi-versioner.
Det kaldes fx:

procedure TForm1.Button1Click(Sender: TObject);
begin
  SetComponentProperty(Form1, 'Label1', 'Caption', 'Hejsa');
end;
Avatar billede ossi Nybegynder
01. maj 2002 - 19:43 #32
han kommer og ser det på fredag...
Avatar billede cms Nybegynder
09. maj 2002 - 20:20 #33
kunne du bruge noget af det?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester