View Full Version : اسم اين كامپوننت چيه ؟
pad_kay
سه شنبه 18 اسفند 1388, 10:09 صبح
با سلام
اسم اين كامپوننت چيه ؟
البته اگر انگليسي هم بود مشكلي نيست
منظور من دكمه هاي حروف است نه گيريدش
gbg
سه شنبه 18 اسفند 1388, 19:55 عصر
فکر کنم کامپوننت نیست و با shape یا image درست شده
SAASTN
سه شنبه 18 اسفند 1388, 23:24 عصر
سلام
با gbg موافقم. البته ممکنه براش کامپوننت نوشته باشند ولی بعید میدونم کامپوننت تجاری و منتشر شده ای باشه.
در هر صورت در اوردنش با چندتا Image کاری نداره،
دو سری عکس برای انتخاب شده و انتخاب نشده بذار رو فرم،
دو تا آرایه از TImage و یک آرایه از Boolean تعریف کن.
تگای عکس هارو ست کن، به همه عکس ها غیر از "همه" یک OnClick اختصاص بده، توی OnClick عکس هاعنصر موازی تگ عکس توی آرایه از Boolean رو برعکس کن Visible عکسای انتخاب شده و نشده رو مطابق با مقدار آرایه Boolean ست کن و بعد هم function بروزرسانی لیستت رو با پارامتر آرایه Boolean فرا خونی کن. توی OnClick "همه" هم کل آرایه رو True کن و ...
اگرم براش کامپوننت بنویسی که کلی پوئنت می ره بالا! دوتا ImageList و چهارتا Canvas.Draw و یک پردازش مختصات کلیک تو MouseDown و کلی ثواب دنیوی و اخروی.
TForm1 = class(TForm)
ImageSelectedCharacter1: TImage;
ImageSelectedCharacter2: TImage;
...
ImageUnselectedCharacter1: TImage;
ImageUnselectedCharacter2: TImage;
...
ImageSelectedAllCharacters: TImage;
ImageUnselectedAllCharacters: TImage;
procedure ImageSelectedCharacter1Click(Sender: TObject);
procedure ImageSelectedAllCharactersClick(Sender: TObject);
private
const
MaxIndex = 31;
private
SelectedImages, UnselectedImages: array [0..MaxIndex] of TImage;
SelectedCharacters: array [0..MaxIndex] of Boolean;
procedure UpdateList(SelectedCharacters: array of Boolean);
end;
...
procedure TForm1.ImageSelectedAllCharactersClick(Sender: TObject);
var
I: Integer;
Flag: Boolean;
begin
Flag:=Sender = ImageSelectedAllCharacters;
for I := 0 to MaxIndex do
begin
SelectedCharacters[I]:=Flag;
SelectedImages[I].Visible:=Flag;
UnselectedImages[I].Visible:=not Flag;
end;
ImageSelectedAllCharacters.Visible:=Flag;
ImageUnselectedAllCharacters.Visible:=not Flag;
UpdateList(SelectedCharacters);
end;
procedure TForm1.ImageSelectedCharacter1Click(Sender: TObject);
var
Index: Integer;
begin
Index:=(Sender as TImage).Tag;
SelectedCharacters[Index]:=not SelectedCharacters[Index];
SelectedImages[Index].Visible:=SelectedCharacters[Index];
UnselectedImages[Index].Visible:=not SelectedCharacters[Index];
UpdateList(SelectedCharacters);
end;
procedure TForm1.UpdateList(SelectedCharacters: array of Boolean);
begin
// do update list
end;
موفق باشید
pad_kay
چهارشنبه 19 اسفند 1388, 08:07 صبح
با سلام و تشكر از شما اگر امكانش هست نمونه سورس كه قرار داديد رو برام به صورت يك مثال كامل آپلود كنيد
SAASTN
چهارشنبه 19 اسفند 1388, 21:56 عصر
سورس کاملی نیست. دیدم ریتم توضیحاتم یکم تنده و ممکنه بعضی جاها کاملا گویا نباشه که یکمشو نوشتم برات گذاشتم. ولی اگه جاییش برات گنگه بگو بیشتر توضیح بدم.
pad_kay
پنج شنبه 20 اسفند 1388, 13:20 عصر
سورس کاملی نیست. دیدم ریتم توضیحاتم یکم تنده و ممکنه بعضی جاها کاملا گویا نباشه که یکمشو نوشتم برات گذاشتم. ولی اگه جاییش برات گنگه بگو بیشتر توضیح بدم.
من مي خواهم براش يك كامپوننت بنويسم به گونه اي كه به هر گريدي بشه اون رو متصل كنيد
اگر راهنماي كنيد ممنون مي شم
SAASTN
پنج شنبه 20 اسفند 1388, 15:23 عصر
اگر می خوای برای چیزی شبیه به این کامپوننت بنویسی پیشنهاد من اینه که به صورت یک CheckListBox بهش نگاه کنی. یک کنترلی که یک سری Item داره که این Item ها می تونند انتخاب شده باشند یا نه. تنها تفاوتش اینه که آیتم ها بجای اینکه متن باشند هر کدوم گرافیک هستند. بعد توی OnChange این کنترل می تونی هر کاری بکنی، از جمله اینکه یک گرید رو بروز کنی.
در این صورت از یک همچین کامپوننتی می تونی برای هر منظور دیگه ای هم استفاده کنی.
SAASTN
پنج شنبه 20 اسفند 1388, 17:07 عصر
به عنوان یک طرح اولیه این کنترل می تونه چند تا عکس رو برای حالات مختلف ایتم هاش بگیره. حالاتی مانند حالت معمولی، انتخاب شده، Hot(برای زمانی که موس روی ایتم هست) و حالت غیر فعال.
یک Collection هم برای وارد کردن آیتم ها داشته باشه که از جمله property های هر آیتم می تونه Mask مربوط به محل آیتم، انتخاب شده یا نشده بودنش، فعال یا غیر فعال بودنش، GroupIndex و OnClickش باشه.
حالا وقتی موس روی کنترل حرکت می کنه یا روی اون کلیک می کنه با توجه به مختصات موس و Mask مربوط به آیتم ها می تونیم تصمیم گیری کنیم و حالت هر آیتم رو تعیین و کنترل رو ترسیم کنیم.
http://upload.iranblog.com/6/1268379627.jpg
اگه بقیه هم برای پروروندن و پختن این کنترل توی بحث شرکت کنند ممنون می شم.
SAASTN
شنبه 22 اسفند 1388, 20:29 عصر
دوستان کسی نظری نداره؟
در کل استفاده از گرافیک بطور وسیع توصیه میشه یا نه؟
alinikaein
دوشنبه 24 اسفند 1388, 16:14 عصر
به نظر من استفاده از گرافيك، يكي از بهترين روشهاست. حالا اگه بتوني مقداري از گرافيك را به صورت كنترلي و برنامهنويسي ايجاد كنه، خوب بهينهتر كار كردي.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.