PDA

Visualizza la versione completa : [Delphi] Recuperare il NAME di un componente


Lyll0
26-08-2003, 17:28
ciao a tutti.
sono tornato dalle ferie e rieccomi con un problema:

ho creato un frame con dentro una ValueListEditor.
Un pulsante genera un frame con dentro il suddetto componente ogni volta che lo si preme.

una procedura del genere gestisce la creazione dei frame:


procedure TMainForm.btnGeneraListaClick(Sender: TObject);
begin
with TFrame.Create(contenitore) do
begin
parent:=contenitore;
left:=sn;
top:=115;
Inc(sn,250);
name:=MioFrame+IntToStr(nframe);
Inc(nframe);
end;
end;
in questo modo cliccando 3 volte, ad esempio,
l'utente si vede generate le 3 ValueListEditor contenute in 3 frame differenti chiamati
MioFrame1
MioFrame2
MioFrame3.

Il problema sorge ora: vorrei che al click del tasto RETURN oppure sotto una certa condizione, OGNI contenuto di OGNUNA delle ValueListEditor venisse salvato in un file differente.
per cui,
MioFrame1->Value1 salva in MioFile1.TXT
MioFrame2->Value2 salva in MioFile2.TXT
MioFrame3->Value3 salva in MioFile3.TXT

il problema è che non so come diavolo fare.
avevo pensato di prelevare dal nome del frame il numero e poi riattaccarlo al nome del file:


... with TFrame do
begin
nomeDaModificare:=Name;
Delete(nomeDaModificare,1,7); //così rimane solo il numero
ValueLIst.Items.SaveToFile(path\MioFile'+NomeDaMod ificare+'.TXT');
end;

solo che così mi dice che la proprietà NAME è inaccessibile..

avreste un altra idea per fare sta cosa?

grazie

alka
26-08-2003, 18:14
TFrame identifica la classe. La proprietà Name non può essere letta usando l'identificatore TFrame, poichè sono le istanze vere e proprie ad avere un nome, e non la classe stessa.

Angbis
26-08-2003, 18:32
Devi ricordare che le classi in se per se sono astratte. Mentre gli oggetti sono l'istanziamento delle classi e quindi sono concrete e occupano uno spazio fisico. Per il tuo problema basta che accedi all'oggetto e non alla classe.

alka
26-08-2003, 18:34
Originariamente inviato da Angbis
Per il tuo problema basta che accedi all'oggetto e non alla classe.
Ottima sintesi. ;)

Angbis
26-08-2003, 18:35
Non spammare con messaggi inutili se no johnny ci fucila :quote:

AR64S-H
26-08-2003, 19:08
Beh è il suo lavoro fucilarci se sbagliamo :gren: :gren: :gren:

Johnny_Depp
27-08-2003, 00:33
Non spammare con messaggi inutili se no johnny ci fucila
questo si che è amore platonico!!! :gren:







... :dottò:

alka
27-08-2003, 01:06
Si scherzava, ovviamente. ;)

Non volevo generare un'orda di «messaggi inquinanti»...ma solamente fare i complimenti ad Angbis per la sintetizzazione.

Io, purtroppo, non riesco sempre ad esprimere i concetti in maniera concisa. :bhò:

Ma...uno dei miei soci dice sempre che "non si può avere tutto nella vita". :quipy:

Ciao! :ciauz:

Johnny_Depp
27-08-2003, 01:20
x alka:

credo che tu non abbia afferrato del tutto "LA SOTTILE LOGICA" del mio post ... e neppure quella di Angbis (nel precedente post)

ma, leggendo questo capirai:
http://forum.html.it/forum/showthread.php?s=&threadid=506015

;)

Lyll0
28-08-2003, 12:04
le vostre sintesi non mi aiutano perchè avevo già intuito le cose da voi dette.

vi ringrazio cmq per le risposte, ma incalzo nuovamente affinchè, se vi andasse, mi inviaste un mini-esempio esemplificativo, perchè non so veramente come uscirne.

NON riesco ad accedere all'oggetto vero e proprio, perchè se uso la proprietà

MioFrame.Name:
1) il nome non è ancora stato stabilito, poichè il frame ottiene un nome solo dopo essere stato generato, dunque, non essendo ancora stato creato in fase di programmazione non so che cosa prelevare
2) se pure provassi a fare una cosa del genere, ricevo un errore tipo: "chiamata ricorrente all'unità"...

grazie ancora e spero di risentirvi presto con un aiuto!

:ciauz:

Loading