PDA

View Full Version : دسترسی به خصوصیات مشترک بعضی کلاس ها



red_neck
یک شنبه 29 آذر 1388, 14:36 عصر
سلام
اول عذرخواهی می کنم که عنوان تاپیک واضح نیست ولی هرچی فکر کردم موردی که کوتاه باشه و بشه به صورت عنوان ازش استفاده کرد به ذهنم نرسید .
حالا سوالم که امیدوارم بتونم واضح توضیح بدم .
من توی یکی از جداول بانک اطلاعاتم اسامی یک سری از اشیاء فرم به همراه نام فرمی که آن شی ء در آن قرار دارد را در دو فیلد مجزا دارم .
حالا می خوام یه تابع تعریف کنم که نام فرم رو ورودی بگیره به عنوان رشته که اونو به یه storedproc میده و تمامی اشیاء اون فرم رو که در جدول هست میده حالا این اشیاء از کلاس های مختلف هستند به عنوان مثال TButton,TEdit,TGroupBox,TCombobox, . . . (البته همشون دو property که من لازم دارم یعنی enabled,visible رو دارن) حالا می خوام هر رکورد از بانک رو که می خونه اگر اون شی ء تو فرم وجود داشت visible اون false بشه یا enabled که این جای دیگه ای مشخص میشه .
اگر بخوام خلاصه بگم من به روشی احتیاج دارم که بتونم با استفاده از اون کدی رو بنویسم ولی در حین کامپایل debug نشه . (نمی دونم درست گفتم یا نه :اشتباه:)
حالا یه کمی از کدی رو هم که نوشتم می زارم


function Tpermissions.apply_permissions(formname: string): boolean;
var
stp:TADOStoredProc;
myform:Tform;
begin
stp:=TADOStoredProc.Create(self);
with stp do
begin
Parameters.Refresh;
Parameters[1].Value:=formname;
open;
if stp.RecordCount>0 then
begin
First;
while not(eof) do
begin
myform:=Application.FindComponent(formname) as tform;
(myform.FindComponent(stp.Fields[1].Value) as {نوع شیء که معلوم نیست }).visible:=false;
stp.Next;
end;
end;
end;
end;
شاید کد بالا بیشتر تونسته باشه منظورم رو برسونه البته اون visible هم که نوشتم قبول نمیکنه دیگه چون نوع شی ء مشخص نیست .
حالا از اساتید تقاضا دارم اگر راه حلی برای این مورد دارن بفرماین . البته می خوام همین حالت پویا بودنش حفظ بشه و مثلاً این طوری نشه که از کلی شرط استفاده بشه تا بفهمه نوعش چیه . (آیا با استفاده از OLEVariant میشه ؟اگر میشه چه طور) :متفکر:
پیشاپیش از راهنمایی هاتون ممنونم :چشمک:
موفق باشید .

zidane
یک شنبه 29 آذر 1388, 21:04 عصر
{نوع شیء که معلوم نیست }=TWinControl:چشمک: