PDA

View Full Version : ساخت What,s This? برای برنامه های دلفی



nasr
پنج شنبه 24 اردیبهشت 1383, 18:47 عصر
سلام

چگونه میشه مثل برنامه های ویندوز که وقتی روی یک دکمه کلیک راست می کنیم یه منو باز میشه با عنوان What,s This?
برای برنامه ساخت البته همه کارهاش مثل همون باشه یعنی یه کادر کوچک باز بشه و در مورد کار اون دکمه توضیحاتی که ما می خواهیم نشان داده بشه

vcldeveloper
سه شنبه 29 اردیبهشت 1383, 01:49 صبح
خب...شما تو کد onmouseup اون کنترل کاری کن که hint اون کنترل نمایش داده بشه. متن راهنما رو هم تو hint کنترل قرار بده!

merced
سه شنبه 29 اردیبهشت 1383, 05:56 صبح
خوب یکی جواب بنده خدا رو بده ما هم یاد بگیریم .

aliasghar
سه شنبه 29 اردیبهشت 1383, 06:19 صبح
دکمه what's this را میشه با popup menu ساخت و محل popup کردن اون را (X,Y) را باید بدست بیاری که میتونی از
مشخصات دکمه ای که روی آن کلیک شده استفاده کنی

وقتی که دکمه popup باز شد مثل یه دکمه معمولی میشه در قسمت OnClick نمایش یک hint را ایجاد کرد

said ali
سه شنبه 29 اردیبهشت 1383, 16:18 عصر
با سلام
همون طور که گفتن به همین راحتی و اگه میخای راحت تر بشه یه پروسیجر کلی برای اون مواردی که میخای وقتی روشون کلیک میشه popup بشه بنویس (رویداد on mouse down همه رو یه تابع قرار بده) بعد با استفده از Sender راهنمای اون رو نمایش بده.

vcldeveloper
چهارشنبه 30 اردیبهشت 1383, 01:10 صبح
ببینید شاید این بدردتون بخوره. البته قبلش باید خاصیت ShowHint کنترلهای مورد نظر رو True کنید و در خاصیت Hint هم یه متنی بذارید:



unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
PopupMenu1: TPopupMenu;
WhatsThis1: TMenuItem;
Label1: TLabel;
procedure Button1ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
procedure WhatsThis1Click(Sender: TObject);
procedure Label1ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
private
{ Private declarations }

public
{ Public declarations }
end;

var
Form1: TForm1;
Control : byte;
implementation

{$R *.dfm}

procedure DoHint(AControl: TControl);
var
pt: TPoint;
begin
pt := AControl.ClientToScreen(Point(1,1)) ;
SetCursorPos(pt.x, pt.y) ;
Application.ActivateHint(pt) ;
end;

procedure TForm1.Button1ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
begin
Control := 1;
end;

procedure TForm1.Label1ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
begin
Control := 2;
end;

procedure TForm1.WhatsThis1Click(Sender: TObject);
begin
case Control of
1: DoHint(Button1);
2: DoHint(Label1);
end;
end;

end.