PDA

View Full Version : سوال: اجرای فرامین در Edit



hyl_141
پنج شنبه 10 مرداد 1392, 11:31 صبح
با سلام
من میخوام یه Edit روی فورم قرار بدم و هر فرمانی که توی Edit نوشتم، اجرا بشه. مثلا اگه نوشتم ';Close' ، فرمان close اجرا بشه و از برنامه خارج بشم یا اگه یه دونه lable روی فورم داشتم و نوشتم ';"lable1.caption:="hamid' ، مقدار کپشن رو حمید بنویسه. یادتون باشه که میخوام داینامیک و پویا باشه یعنی هر چیزی که بنویسم.
خیلی هم عجله دارم. دلفی کاران محترم لطفا کمکم کنید. مرسی

fahimi
پنج شنبه 10 مرداد 1392, 12:33 عصر
برای شروع


procedure TForm1.Button1Click(Sender: TObject);
begin
(Application.FindComponent('Form1') as Tform).Caption:='cc';
((Application.FindComponent('Form1') as Tform).FindComponent('Label1') as TLabel).Caption:='bb';
end;

hyl_141
پنج شنبه 10 مرداد 1392, 12:49 عصر
مرسی از شما دوست عزیز اما من داینامیک میخوام. من نمیخوام اینجوری کد بنویسم که کامپوننت رو پیدا کن و حالا کپشنش رو تغییر بده.
باید تمام properties هر کامپوننتی که بنویسم رو بتونه روش تغییرات اعمال کنه نه فقط caption ، اون هم فقط labale
شاید من داخل همون edit1 نوشتم ' ;"edit1.text:="ali' . شاید نوشتم ';('showmessage('book ' . شاید نوشتم ';edit1.visible:=false'
توجه داشته باشید که هر فرمان

شاید اینجوری بهتر منظورمو متوجه بشید. هر فرمانی که در محیط برنامه نوشته بشه (داخل یک edit یا memo)، کامپایل و اجرا بشه.

یوسف زالی
پنج شنبه 10 مرداد 1392, 15:49 عصر
سلام.


خیلی هم عجله دارم

این جمله در این انجمن چندان طرفدار نداره. دوستان بدون توجه به موقعیت و بدون منت کارشون رو انجام می دن. عجله داشتن شما به خود شما مرتبط می شه و مسوولیتی برای سایرین نداره مگر این که ذینفع باشند.

اگر فقط قصد دارید که پراپرتی ها رو تغییر بدید و نه این که اسکریپت ران کنید،


function ModifyProperty(AOwner: TWinControl; AComponentName, PropName: string; AValue: Variant): boolean;
var
AComponent: TComponent;
begin
Result := false;

if not Assigned(AOwner) then
Exit;

AComponent := AOwner.FindComponent(AComponentName);

if not Assigned(AComponent) then
Exit;

if not Assigned(GetPropInfo(AComponent, PropName)) then
Exit;

try
SetPropValue(AComponent, PropName, AValue);
Result := true;
except
end;
end;



مثال:


procedure TForm1.Button1Click(Sender: TObject);
begin
if not ModifyProperty(Self, Edit1.Text, Edit2.Text, Edit3.Text) then
ShowMessage('An error occures.');
end;



مقادیر رو از 3 تا ادیت دریافت کردم.
فقط باید حواستون باشه که TypInfo رو Use کرده باشید.

من در این پست از Type Casting فاکتور گرفتم، می تونید خودتون کنترل کنید که انواع ورودی و مقصد با هم تطبیق پذیر باشند.
موفق باشید.

hyl_141
جمعه 11 مرداد 1392, 01:18 صبح
مرسی از شما دوست عزیز اما این جوابگوی کار من نیست.
توجه داشته باشید که نوشتم هر فرمان. شاید نوشتم ';('showmessage('book ' . شاید نوشتم ';form1.close' . شاید نوشتم ';Application.Terminate' .
شاید : ';((showmessage(strtoint(TreeView1.Items.Item[1].Item[StrToInt(Edit2.Text)].Count'

یوسف زالی
جمعه 11 مرداد 1392, 01:28 صبح
پس باید از RemObjects استفاده کنید.
(در این خصوص آقای عشایری استاده.)