PDA

View Full Version : مشکل در کلاس



vb.net2008
چهارشنبه 22 تیر 1390, 10:31 صبح
سلام
من یک کلاس دارم که توش یک تابع تعریف کردم. و تو این تابع دو شی edit و panel ایجاد می کنم. اما چون این تابع از یک متغیر از نوع کلاس فراخوانی می کنم خطا می ده و اشیا رو نمی سازه.

Felony
چهارشنبه 22 تیر 1390, 11:42 صبح
کدتون رو قرار بدید ، الان از کجا بگیم مشکل چیه ؟ احتمالا کلاس رو بدون نمونه سازی فراخوانی کردید ؛ اول یک نمونه از کلاس رو داخل متغییر بسازید و بعد تابع رو فراخوانی کنید .

vb.net2008
چهارشنبه 22 تیر 1390, 12:45 عصر
کد من
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ImgList, jpeg, ExtCtrls, dbcgrids, ComCtrls,
ShellCtrls, Menus, XPMan, Grids, DBGrids, DBCtrls;
type
Raak_Page=class(TObject)
i:Integer;
procedure ShowPage(PageID:Integer);
end;
implementation
uses DM_Unit;
{$R *.dfm}
var Page:Raak_Page ;
procedure Raak_Page.ShowPage(PageID:Integer);
var
Panel:TPanel;
Edi1:TEdit;
Image1:TImage;
begin
DM.Q1.Close ;
DM.Q1.SQL.Clear ;
DM.Q1.SQL.Add('Select * from tbl_page where ID=:ID') ;
DM.Q1.Parameters.ParamByName('ID').Value:=DM.Menu['PageID'] ;
DM.Q1.Open ;
if DM.Q1.RecordCount>0 then
begin
if DM.Q1['PageType'] =0 then
Panel:=TEdit.creat(self)
end;
end;

Mahmood_M
چهارشنبه 22 تیر 1390, 13:50 عصر
دوست عزیز هدفتون از این کار چیه ؟!

چرا کلاس رو از نوع TObject تعریف کردید ؟
Panel رو از نوع TPanel تعریف کردید بعد اون رو برابر با یک کلاس از نوع TEdit قرار می دید ؟!
و ...

بهتره هدفتون رو بگید ، دستوراتی که نوشتید مشکلات زیادی داره ...

vb.net2008
چهارشنبه 22 تیر 1390, 17:24 عصر
سلام
کلاس رو می بینید می خوام توی فایل دیگه بنویسمش بعد تو برنامم ازش استفاده کنم. برای اینکار کلاس رو باید باید توی چه نوع فایل بنویسم.
در مورد panel هم چون عجلاه داشتم و می خواست کد رو سرسع بفرستم اینطوری نوشمش ، توی برنامه اصلی درسته

vb.net2008
چهارشنبه 22 تیر 1390, 17:29 عصر
راستی هدفم
من یه منو دارم. که هر کدوم از گزینه هاش یه چیزی داره مثلا یکی متن داره یکی عکس داره،....
من با توجه به نوعش شی مربوطه رو می سازم

BORHAN TEC
چهارشنبه 22 تیر 1390, 17:50 عصر
راستی هدفم
من یه منو دارم. که هر کدوم از گزینه هاش یه چیزی داره مثلا یکی متن داره یکی عکس داره،....
من با توجه به نوعش شی مربوطه رو می سازم
یعنی چی؟
اگر نوع های اشیایی که می سازید خیلی زیاده باید از راه حل دیگری استفاده کنید. اگر این گزینه های منو و نوع آنها در زمان RunTime مشخص می شه و بعداً و در هنگام اجرای برنامه مجبور شوید که اشیایی از آن نوع ایجاد کنید بهتره که از RemObjects Pascal Script ویا ابزارهای مشابه استفاده کنید.

vb.net2008
چهارشنبه 22 تیر 1390, 17:55 عصر
RemObjects Pascal Script کجاست چه توری باید ازش استفاده کنم

یوسف زالی
چهارشنبه 22 تیر 1390, 20:20 عصر
سلام.
1- ذخیره کلاس در فایل اسمش هست Serialize و بازیابی آن هست Deserialize .
2- برای ساختن شی های مختلف کافیه که ورودی تابعی که می سازه از نوع TObject باشه و یه پارامتر اضافی هم برای تعیین نوع کلاس باید بفرستید.
دقیقا مثل :
Application.CreateForm(TForm1, Form1); // noe shey va khode shey

در حقیقت پارامتر اول باید Class of TObject باشه. پارامتر دوم Object.