PDA

View Full Version : طراحی کامپوننت



شفیعی
دوشنبه 17 شهریور 1382, 18:36 عصر
سلام

دوستان من می خواهم کامپونتی بنویسم که تمام خواص ایمیج را داشته باشد

فقط فرق این کامپونت با ایمیج در این است که از نظر ابعاد محدودیت نداشته باشد چون ایمیج ابعادش 2000در 2000 می باشد

چگونه باید اینکار انجام داد

یا یک کامپونت بنویسیم که خاصیت پانل را داشته باشد با این شرط که بتوان بر روی پانل خط - نقطه -دایره رسم نمود

لطفا بنده را راهنمائی نمائید

unit GPanel;

interface

uses
Variants,ExtCtrls,GRAPHICS,FORMS,Windows,
Messages, SysUtils,Classes,DIALOGS,Controls,
StdCtrls,OpenGL;

type
TGPanel = class(TPanel)
PGR:TCANVAS;
private
{ Private declarations }
protected
{ Protected declarations }
public
CONSTRUCTOR Create (AOWNER:TCOMPONENT);OVERRIDE;
procedure drawOneLine(R,B,G:DOUBLE;x1,y1,x2,y2 : single);
{ Public declarations }
published

{ Published declarations }
end;

procedure Register;

implementation
CONSTRUCTOR TGPANEL.CREATE (AOWNER:TCOMPONENT);
BEGIN
INHERITED CREATE(AOWNER);
COLOR:=CLBLACK;
END;
procedure Register;
begin
RegisterComponents('NAS', [TGPanel]);
end;

end.
چگونه می توان در کامپونت بالا به پانل خاصیت TCANVAS اضافه کرد

مهدی کرامتی
دوشنبه 17 شهریور 1382, 21:57 عصر
داداش این BBCode ها خیلی خوبن ها! بعدا نگی نگفتی!!! فعلا من خودم اون بلوک کد رو برات توسط تگ CODE تبدیل به حالت کد کردم. از دفعه بعدی خودت یادت باشه.

شفیعی
دوشنبه 17 شهریور 1382, 22:49 عصر
جناب آقای کرامتی
منظور شما را از متن بالا متوجه نشدم اگر خطائی از بنده سر زده است شرمنده ام

مهدی کرامتی
دوشنبه 17 شهریور 1382, 23:07 عصر
از BBCode برای فرمت کردن متن پستها استفاده میشود. بخش راهنمای سایت را برای جزئیات بیشتر ببینید.

Mashatan
دوشنبه 17 شهریور 1382, 23:20 عصر
منظور ایشون اینه :)

If see='deghat' then
Write('chiz khoobi !');

ببین اصلا واضح نیست

حالا این رو نگاه کن :

If see='deghat' then
Write('chiz khoobi !');

ارادتمند مشاطان

Sohrab_Tapar
سه شنبه 18 شهریور 1382, 02:42 صبح
type
TGPanel = class(TPanel)
PGR:TCANVAS;
private
{ Private declarations }
protected
{ Protected declarations }

به جای TPanel از TCustomPanel استفاده کن.

شفیعی
سه شنبه 18 شهریور 1382, 12:56 عصر
دوست عزیز سلام
لطفا بیشتر توضیح دهید

houshmand
سه شنبه 18 شهریور 1382, 13:02 عصر
وقتی مقادیر زیر را وارد کنیم


Image1.Picture.Bitmap.Width:=20000;
Image1.Picture.Bitmap.Height:=20000;

خط زیر در
unit Graphics;
مقدار غیر صفر را بر می گرداند و باعث
Error
می شود(چرا؟) :?:



Result := GDICheck(CreateDIBSection(ScreenDC, BI^, DIB_RGB_COLORS, BitsMem, 0, 0));


//×××××××××××××××××××
:!: شما می توانید یک سری Image بر اساس نیاز بسازید و مانند کاشی به هم بچسبانید به گونه ای که به نظر یکی بیایند
//******************
:!: دوست عزیز اگر من بجای شما بودم هرگز چنین کاری نمی کردم!
زیرا سریع ترین کامپیوتر ها هم وقتی حجم عملیات زیاد باشد با مشکل روبرو می شوند
/×××××××××××××××××××××
بهترین پیشنهادی که من می کنم این است که شما اطلاعات را در پشت صحنه نگاه دارید و با توجه به موقعیت Scroll کاربرفقط آن قسمت را نمایش دهید
که این مشروط به طراخی یک الگریتم زیبا برای آن است
موفق باشید

شفیعی
سه شنبه 18 شهریور 1382, 13:09 عصر
سلام
از مطلب بالا چیزی دستگیرم نشد لطفا کمی توضیح دهید

houshmand
چهارشنبه 19 شهریور 1382, 13:42 عصر
سلام
از مطلب بالا چیزی دستگیرم نشد لطفا کمی توضیح دهید
از کجای آن؟

//***************************
:!: راستی دقیقاُ چه کار می خواهی بکنی؟
مثلاُ آیا می خواهی به روش Metafile هایا Bitmap?

شفیعی
دوشنبه 24 شهریور 1382, 15:01 عصر
دوست عزیز لطفا این قسمت را نگاه کنید تا متوجه شوید بنده می خواهم چکار بکنم
http://www.irandevelopers.com/forum/display_topic_threads.asp?ForumID=10&TopicID=1038&PagePosition=1

شفیعی
شنبه 29 شهریور 1382, 21:38 عصر
چگونه می توان یک کامپوننت جدید شبیه IMAGE ساخت با این تفاوت که از نظر ابعاد محدودیت نداشته باشد

شفیعی
پنج شنبه 28 اسفند 1382, 21:47 عصر
سلام
اگر بخواهیم پانل راجوری طراحی کنیم که بتوانیم عملیات اسکرول را بر روی پانل انجام دهیم باید چکار کنیم

شفیعی
یک شنبه 02 فروردین 1383, 11:24 صبح
سلام
کامپوننت بالا را به شکل زیر تغییر دادم


unit GPANEL;

interface

uses
Windows, Messages, SysUtils, Classes, Controls, ExtCtrls,
Variants, Graphics, Forms,Dialogs;

type
TDXFVIEW = class(TCustomPanel)
private
Filename:string;
ZOOM:INTEGER;
XMIN:Double;
YMIN:Double;
XMAX:Double;
YMAX:Double;
GRAPH:TCanvas;
{ Private declarations }
protected
{ Protected declarations }
public
CONSTRUCTOR CREATE (AOWNER:TCOMPONENT);OVERRIDE;
{ Public declarations }
published
property BevelWidth;
property BorderStyle;
property DragCursor;
property DragMode;
property Enabled;
property Color;
property Ctl3D;
property Locked;
property ParentColor;
property ParentCtl3D;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ShowHint;
property TabOrder;
property TabStop;
property Visible;
property OnClick;
property OnDblClick;
property OnDragDrop;
property OnDragOver;
property OnEndDrag;
property OnEnter;
property OnExit;
property Align;
property BevelInner;
property BevelOuter;
property BorderWidth;
property DxfFile: STRING READ Filename WRITE Filename ;
property DxfZoom: INTEGER READ ZOOM WRITE ZOOM ;
property Dxf_X_Min: Double READ XMIN WRITE XMIN ;
property Dxf_Y_Min: Double READ YMIN WRITE YMIN ;
property Dxf_X_Max: Double READ XMAX WRITE XMAX ;
property Dxf_Y_Max: Double READ YMAX WRITE YMAX ;
property DXFCAVAS : TCanvas READ GRAPH WRITE GRAPH;
{ Published declarations }
end;

procedure Register;

implementation
CONSTRUCTOR TDXFVIEW.CREATE (AOWNER:TCOMPONENT);
BEGIN
INHERITED CREATE(AOWNER);
END;
procedure Register;
begin
RegisterComponents('DXF', [TDXFVIEW]);
end;

end.

شفیعی
دوشنبه 03 فروردین 1383, 01:04 صبح
سلام
من دنبال مقاله یا سایتی و یا نمونه برنامه در مورد طراحی کامپوننت می گردم