PDA

View Full Version : سوال: تغییر Client Height به صورت مستقل از Height



ehsan_faal
یک شنبه 23 فروردین 1394, 16:13 عصر
سلام دوستان.اگه بخوام کپشن فرم رو با یه فونت بزرگتر نشون بدم در حالی که مثلا از یکی از skin های آماده که تو خود دلفی قسمت Project Option هست باید چیکار کنم؟
تغییر سایز فونت جواب نمیده و با تغییر Height خاصیت Client Height هم تغییر میکنه انگار که همیشه اختلافشون ثابته.
به طور کلی چه جوری میشه یکم بیشتر روی جنبه های بصری کپشن فرم مانور داد؟ مثله بعضی برنامه ها که تو کپشنشون از دوتا فونت یا رنگ مختلف استفاده میکنن.

با تشکر

دلفــي
دوشنبه 24 فروردین 1394, 08:49 صبح
unit Unit1;


interface


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


type
TForm1 = class(TForm)
private
procedure WMNCPaint(var Mes: TWMNCPaint); message WM_NCPAINT;
{ Private declarations }
public
{ Public declarations }
end;


var
Form1: TForm1;


implementation


{$R *.dfm}


procedure TForm1.WMNCPaint(var Mes: TWMNCPaint);
var ACanvas: TCanvas;
intLeftShift, intTopShift: Integer;
begin
inherited;


ACanvas := TCanvas.Create;
try
{to retrieve the device context for the Form1 window}
ACanvas.Handle := GetWindowDC(Form1.Handle);
with ACanvas do
begin
Brush.Color := clActiveCaption;
Font.Style := [fsItalic];
Font.Color := clRed;
Font.Size := 12;


{calculate the left coordinate for caption drawing}
intLeftShift := GetSystemMetrics(SM_CYMENU) + GetSystemMetrics(SM_CXBORDER);
{calculate the top coordinate for caption drawing}
intTopShift := (GetSystemMetrics(SM_CYCAPTION) - Abs(Font.Height)) div 2 + 1;


{output the caption string}
TextOut(intLeftShift, intTopShift, Caption)
end;
finally
{to release the device context}
ReleaseDC(Form1.Handle, ACanvas.Handle);
ACanvas.Free
end;
end;


end.

ehsan_faal
دوشنبه 24 فروردین 1394, 12:23 عصر
عذر میخوام به خاطر سطح پایین سوالم ولی الان این پروسجر رو باید چیکارش کنم.یعنی بالفرض که بخوام یه جوری فراخوانیش کنم پارامتر ورودیش رو باید چی بذارم؟



با تشکر

دلفــي
سه شنبه 25 فروردین 1394, 11:31 صبح
عذر میخوام به خاطر سطح پایین سوالم ولی الان این پروسجر رو باید چیکارش کنم.یعنی بالفرض که بخوام یه جوری فراخوانیش کنم پارامتر ورودیش رو باید چی بذارم؟



با تشکر

كار خاصي نياز نيست فقط بايد در قسمت زير متغرهاي مورد نظر خودت رو وارد كني :



Brush.Color := clActiveCaption;
Font.Style := [fsItalic];
Font.Color := clRed;
Font.Size := 12;
.
.
.

ehsan_faal
سه شنبه 25 فروردین 1394, 13:37 عصر
ممنون ولی اگه اینطور که شما میگی باشه یعنی این کدی که شما گذاشتی باید رنگ نوشته رو قرمز بکنه دیگه؟
ولی هیچ اتفاقی نمیفته وقتی رانش میکنم.نه فونت تغییر میکنه نه رنگ نه استایل متن:ناراحت:

دلفــي
چهارشنبه 26 فروردین 1394, 12:35 عصر
بسته به نوع ويندوز عملكرد كد فرق ميكنه