PDA

View Full Version : تغییر رنگ نوشته button



newmefmef
پنج شنبه 23 فروردین 1386, 21:41 عصر
سلام
چطور می شه با حرکت موس بر روی یک دکمه رنگ نوشته اون تغییر کنه من دستور زیر را در رویداد onmousemove نوشتم ولی جواب نداد

button1.font.color:=clred

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

mahdyeh
پنج شنبه 23 فروردین 1386, 22:30 عصر
سلام

منم همینجا مشکل دارم
ممنون میشم اگه یکی لطف کنه و مارو راهنمائی بکنه ...

maryam_80
جمعه 24 فروردین 1386, 00:21 صبح
امیدوارم که link زیر بتواند برای شما مفید باشد:

http://delphi.about.com/od/vclwriteenhance/l/aa061104a.htm
http://delphi.about.com/library/code/ncaa061104a.htm

mjdeveloper
جمعه 24 فروردین 1386, 01:12 صبح
سلام
چطور می شه با حرکت موس بر روی یک دکمه رنگ نوشته اون تغییر کنه من دستور زیر را در رویداد onmousemove نوشتم ولی جواب نداد

button1.font.color:=clred

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

شاید اینجوری کار کنه

button1onmousemove

button1.font.color:=clred;

form1onmousemove
button1.font.color:=clblack;

newmefmef
جمعه 24 فروردین 1386, 09:49 صبح
ممنون از مریم
ولی متاسفانه چیزی دستگیرم نشد

ممنون mjdeveloper
روش شما نیز کار امد نیست

SYNDROME
جمعه 24 فروردین 1386, 11:52 صبح
سلام
دوست عزیز
1-به جاری Button از BitBtn استفاده کن.
2-می توانی از روش دوست عزیزمان mjdeveloper استفاده کنی جواب می دهد.
ولی مشکلی دارد.اگر کامپونتهای دیگری در صفحه باشد و بعد از BitBtn بر روی آن کامپونت بروی دید رویداد فرم فراخوانی نشده و رنگ Bitbtn همان رنگ می ماند.
از روش زیر استفاده کن حتما جواب می دهد.(خودم همین الان امتحان کردم)
1-Bitbtn را در صفحه قرار بده.
2-یک Time با مدت زمان 1 قرار بده(Interval=1)
3-متغییری a : TMouse; را تعریف کن.
در رویداد OnTime مربوط به Timer کدهای زیر را وارد کن.
IF (A.CursorPos.X>=(BitBtn1.Left + Left+5)) And (A.CursorPos.X<=(BitBtn1.Left+ Left+5)+BitBtn1.Width) And (A.CursorPos.Y>=BitBtn1.Top+Top+30) And (A.CursorPos.Y<=(BitBtn1.Top+Top+30)+BitBtn1.Height) Then
BitBtn1.Font.Color := clRed
Else
BitBtn1.Font.Color := clWindow;
اگر سوالی بود در خدمتم.

newmefmef
جمعه 24 فروردین 1386, 12:01 عصر
ممنونم syndrome
ایا راه حل ساده تری وجود ندارد؟

SYNDROME
جمعه 24 فروردین 1386, 12:07 عصر
با سلام
راه حلی که گفتم پیچیدپی زیادی ندارد.
ولی برای همه چند تا BitBtn هم جواب می دهد.
اگر راه حل بهتری کسی دارد بگوید.

Hamid_PaK
جمعه 24 فروردین 1386, 17:48 عصر
این رو همینطوری نوشتم ولی بطور کلی همین هم کار می کنه ...



unit BitBtnEx;

interface

uses
SysUtils, Messages, Graphics, Classes, Controls, Buttons;

type
TBitBtnEx = class(TBitBtn)
private
FHoverColor: TColor;
FNormalColor: TColor;
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
public
constructor Create(AOwner: TComponent); override;
published
property Action;
property Anchors;
property BiDiMode;
property Cancel;
property Caption;
property Constraints;
property Default;
property Enabled;
property Glyph;
property Kind;
property Layout;
property Margin;
property ModalResult;
property NumGlyphs;
property ParentShowHint;
property ParentBiDiMode;
property ShowHint;
property Style;
property Spacing;
property TabOrder;
property TabStop;
property Visible;
property OnEnter;
property OnExit;
property HoverColor: TColor read FHoverColor write FHoverColor;
property NormalColor: TColor read FNormalColor write FNormalColor;
end;

procedure Register;

implementation

uses StdCtrls;

procedure TBitBtnEx.CMMouseEnter;
begin
//;
Font.Color := FHoverColor;
inherited;
end;

procedure TBitBtnEx.CMMouseLeave;
begin
//;
Font.Color := FNormalColor;
inherited;
end;

constructor TBitBtnEx.Create;
begin
//;
inherited Create(AOwner);
Font.Color := FNormalColor;
FHoverColor := clRed;
Invalidate;
end;

procedure Register;
begin
RegisterComponents('[PRAISER]', [TBitBtnEx]);
end;

end.


یا حق ...

dkhatibi
شنبه 25 فروردین 1386, 10:50 صبح
از bitbtn استفاده کن. باید رویداد Onmouse را برای رویداد فرم (شی زیرین دکمه) و خود دکمه بنویسی تا بتونی به حالت اولیه در باریش!

newmefmef
شنبه 25 فروردین 1386, 13:54 عصر
dkhatibi ممنونم از پاسخ شما ولی چون من یک مبتدی هستم متوجه منظور شما نشدم اگر ممکنه بیشتر توضیح بدید

Hamid_PaK
شنبه 25 فروردین 1386, 15:54 عصر
مثال ضمیمه شد.

یا حق ...