چه جوری میشه یه button روی form گذاشت و کاری کرد که با کلیک روی اون یه عدد ازت بگیره و به تعداد اون button برات ایجاد کنه
Printable View
چه جوری میشه یه button روی form گذاشت و کاری کرد که با کلیک روی اون یه عدد ازت بگیره و به تعداد اون button برات ایجاد کنه
- از inputbox استفاده كنيد
- كلاسي از نوع Tbutton تعريف كنيد
- به تعدادي كه كاربر وارد كرده در يك حلقه متغير هايي از class تعريف شده رو ايجاد كنيد و با مقدار دهي top, left, parent روي فرم بگذاريد
سلامنقل قول:
فرهاد جان شما كه زحمت جواب رو كشيديد ، يه مثال كوچيك هم ميزديد بهتر بود.
ممنون
روچشم نانفرس جان. تا بعدازظهر آماده ميكنمنقل قول:
سلام
فرهاد جان شما كه زحمت جواب رو كشيديد ، يه مثال كوچيك هم ميزديد بهتر بود.
ممنون
با تشکر از دوستان یه سری هم اینجا بیاید
کد:http://forum.p30world.com/showthread.php?t=204386
سلامنقل قول:
شما هم يكسري اينجا بزنيد :
کد:http://forum.p30world.com/showthread.php?t=76875&highlight=graphicex
noneforce جان فکر کنم سوال من با اون سوال فرق کنه ها
جوابی هم که به من دادن(تو اون بحث )درسته compile هم میشه ولی موقع اجرا اون ارور رو میده و برنامه(اجرا) قطع میشه
کلاس نه، شی (Object)؛ وقتی میگید یک کلاس از نوع TButton تعریف کنید، یعنی این:نقل قول:
- كلاسي از نوع Tbutton تعريف كنيد
ولی وقتی میگید یک Object از نوع TButton تعریف کنید، یعنی این:کد:TMyClass = class(TButton)
private
protected
public
end;
یک Object اشاره گری به نمونه ایی (Instance ایی) از یک کلاس هست که در Heap ایجاد شده، نه خودClassکد:var
MyButton : TButton;
begin
MyButton := TButton.Create(Self);
...
end;
سورس نمونه برای ایجاد دکمه بر روی فرم به تعداد دلخواه:
کد:unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
//Keeps user input for number of new buttons to be created.
InstanceNum : integer;
//Preserves next "Left" property value for next series of buttons to be created.
ColNum : integer;
//OnClick event handler for the newly created buttons.
procedure CustomButtonsClick(Sender: TObject);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
//Suffix to be added to the end of each component name.
CompCounter : integer;
//User input in string format to keep returned value from InputBox.
UserInput : string;
//Name of newly created component.
CompName : string;
begin
//Take number of TButton instances to be created from user
UserInput := InputBox('Caption','Enter number of instances','0');
InstanceNum := StrToIntDef(UserInput,0);
if InstanceNum = 0 then
Exit;
for i := 1 to InstanceNum do
begin
CompCounter := i;
//Create each component and initialize its properties
with TButton.Create(Self) do
begin
Parent := Self;
Visible := False;
Left := ColNum;
//Calculate height for newly created components to prevent overlapping
Top := i * Height + Height;
//Choosing a name for the new component...
repeat
//Make a name
CompName := 'MyBtn'+IntToStr(CompCounter);
//Check if any component with the same name exists. If there is then
//change the name by adding one to suffix of the name.
if Self.FindComponent(CompName) = nil then
Name := CompName
else
Inc(CompCounter);
//continue the loop until a name is set for the new component.
until Name <> '';
//Assign OnClick event handler
OnClick := CustomButtonsClick;
Visible := True;
end;
end;
//Calculate Left property for the next series of new buttons
Inc(ColNum,80);
end;
procedure TForm1.CustomButtonsClick(Sender: TObject);
begin
ShowMessage(TComponent(Sender).Name);
end;
سلام
ممنون از كد خوانا و كاملتون.
تذكر به جايي بود. تشكرنقل قول:
کلاس نه، شی (Object)
يك سورس هم براي اين كار به همراه تحليل كد آماده شده:
موفق باشيدکد:http://webmaster110.parsaspace.com/p30world/Runtime_VCL.rar