![]() |
|
كمبوبوكس مع الهيدر - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : كمبوبوكس مع الهيدر (/showthread.php?tid=12222) |
كمبوبوكس مع الهيدر - salah07230 - 23-02-2023 السلام عليكم اين اجد هذا المكون ![]() عبارة عن كمبوبوكس مع الهيدر وشكرا RE: كمبوبوكس مع الهيدر - larbiparadox - 23-02-2023 (23-02-2023, 02:37 PM)salah07230 كتب : السلام عليكم وعليك السلام على ما أعتقد هي مكونات edit الخاصة بـAlphaControls هو مكون خاص بـ skin يوجد معاه مكونات edit بالنسبة للإقونات يعمل معها مكون اخر إسمه sCharImageList خاص بقراءة الرموز الموجودة في أنواع من الخطوط مثل Font Awesome و توجد خطوط إحتارفية مثل Font Awesome Pro يعتمد عليها خاصة أصحاب مواقع الانترنت لأن لها مزايا عدة مثال : هذه صورة من برنامج عملت عليه
RE: كمبوبوكس مع الهيدر - salah07230 - 23-02-2023 بارك الله فيك أخي الكريم لكني ابحث عن هيدر الكمبوبوكس RE: كمبوبوكس مع الهيدر - Delphi4Us - 25-02-2023 وعليكم السلام ورحمة الله ماذا تقصد بالهيدركمبوبوكس اذا كنت تقصد الشريط الازرق الذي يجمع الادوات فهذا عبارة عن Panel اعتقد ستجد له خاصية اظهار Title له RE: كمبوبوكس مع الهيدر - salah07230 - 25-02-2023 نعم اخي اقصد الشريط الازرق RE: كمبوبوكس مع الهيدر - Delphi4Us - 25-02-2023 الادوات التي ذكرها لك الاخ فوق فيها الاداة واعتقد هي الـ Panel او GroubPanel لا اذكر ابحث عنها في الادوات وابحث بخصائصها ملاحظة وهي لا تتبع الكمبوبكس وانما panel تم وضع الادوات تلك بداخلها RE: كمبوبوكس مع الهيدر - salah07230 - 25-02-2023 بارك الله فيك أخي غدا ساجرب RE: كمبوبوكس مع الهيدر - salah07230 - 26-02-2023 وجدت الحل لكني لم استطع تطبيقة فهل من مساعدة بمتال تطبيقي وشكرا ![]() كود : unit CustomCaptionPanel;
interface
uses
Windows, SysUtils, Classes, Controls, Graphics;
type
TCustomCaptionPanel = class(TCustomControl)
private const
DEFAULT_BORDER_COLOR = $0033CCFF;
DEFAULT_CLIENT_COLOR = clWindow;
DEFAULT_BORDER_RADIUS = 16;
private
{ Private declarations }
FBorderColor: TColor;
FClientColor: TColor;
FBorderRadius: integer;
FCaption: TCaption;
FAlignment: TAlignment;
procedure SetBorderColor(BorderColor: TColor);
procedure SetClientColor(ClientColor: TColor);
procedure SetBorderRadius(BorderRadius: integer);
procedure SetCaption(const Caption: TCaption);
procedure SetAlignment(Alignment: TAlignment);
protected
{ Protected declarations }
procedure Paint; override;
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
published
{ Published declarations }
property Color;
property Caption read FCaption write SetCaption;
property Alignment: TAlignment read FAlignment write SetAlignment default taCenter;
property Font;
property BorderColor: TColor read FBorderColor write SetBorderColor default DEFAULT_BORDER_COLOR;
property ClientColor: TColor read FClientColor write SetClientColor default DEFAULT_CLIENT_COLOR;
property BorderRadius: integer read FBorderRadius write SetBorderRadius default DEFAULT_BORDER_RADIUS;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Rejbrand 2009', [TCustomCaptionPanel]);
end;
{ TCustomCaptionPanel }
constructor TCustomCaptionPanel.Create(AOwner: TComponent);
begin
inherited;
ControlStyle := [csAcceptsControls, csCaptureMouse, csClickEvents,
csSetCaption, csOpaque, csDoubleClicks, csReplicatable, csPannable];
FBorderColor := DEFAULT_BORDER_COLOR;
FClientColor := DEFAULT_CLIENT_COLOR;
FBorderRadius := DEFAULT_BORDER_RADIUS;
FAlignment := taCenter;
end;
procedure TCustomCaptionPanel.Paint;
var
r: TRect;
const
Alignments: array[TAlignment] of integer = (DT_LEFT, DT_RIGHT, DT_CENTER);
begin
inherited;
Canvas.Pen.Color := FBorderColor;
Canvas.Brush.Color := FBorderColor;
Canvas.Brush.Style := bsSolid;
Canvas.FillRect(Rect(FBorderRadius,
0,
ClientWidth - FBorderRadius,
FBorderRadius));
Canvas.Ellipse(Rect(0,
0,
2*FBorderRadius,
2*FBorderRadius));
Canvas.Ellipse(Rect(ClientWidth - 2*FBorderRadius,
0,
ClientWidth,
2*FBorderRadius));
Canvas.Brush.Color := FClientColor;
Canvas.Rectangle(Rect(0,
FBorderRadius,
ClientWidth,
ClientHeight));
Canvas.Font.Assign(Self.Font);
r := Rect(FBorderRadius, 0, ClientWidth - FBorderRadius, FBorderRadius);
Canvas.Brush.Style := bsClear;
DrawText(Canvas.Handle,
PChar(Caption),
length(Caption),
r,
DT_SINGLELINE or DT_LEFT or DT_VCENTER or DT_END_ELLIPSIS or Alignments[FAlignment]);
end;
procedure TCustomCaptionPanel.SetAlignment(Alignment: TAlignment);
begin
if FAlignment <> Alignment then
begin
FAlignment := Alignment;
Invalidate;
end;
end;
procedure TCustomCaptionPanel.SetBorderColor(BorderColor: TColor);
begin
if FBorderColor <> BorderColor then
begin
FBorderColor := BorderColor;
Invalidate;
end;
end;
procedure TCustomCaptionPanel.SetBorderRadius(BorderRadius: integer);
begin
if FBorderRadius <> BorderRadius then
begin
FBorderRadius := BorderRadius;
Invalidate;
end;
end;
procedure TCustomCaptionPanel.SetCaption(const Caption: TCaption);
begin
if not SameStr(FCaption, Caption) then
begin
FCaption := Caption;
Invalidate;
end;
end;
procedure TCustomCaptionPanel.SetClientColor(ClientColor: TColor);
begin
if FClientColor <> ClientColor then
begin
FClientColor := ClientColor;
Invalidate;
end;
end;
end.RE: كمبوبوكس مع الهيدر - Ndagor - 26-02-2023 قمت بالتعديل عليه ليتسنى استعماله بطرية سهلة ,,,, المهم يجب دائما اضافة CustomCaptionPanel بعد ExtCtrls حتى يتم تحويل Panel العادي الى هذا النوع الجديد انظر الى الملف المرفق,,, كود : unit CustomCaptionPanel;
interface
uses
Windows, SysUtils, Classes, Controls, Graphics, ExtCtrls;
type
TPanel = class(ExtCtrls.TPanel)
private
FEnableHeader :boolean;
{ Private declarations }
FBorderColor: TColor;
FBorderRadius: integer;
procedure SetBorderColor(BorderColor: TColor);
procedure SetBorderRadius(BorderRadius: integer);
procedure SetEnableHeader(const Value: boolean);
protected
{ Protected declarations }
procedure Paint; override;
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
property BorderColor: TColor read FBorderColor write SetBorderColor;
property BorderRadius: integer read FBorderRadius write SetBorderRadius;
property EnableHeader:boolean read FEnableHeader write SetEnableHeader;
end;
implementation
{ TCustomCaptionPanel }
constructor TPanel.Create(AOwner: TComponent);
begin
inherited;
FBorderColor := $0033CCFF;;
FBorderRadius := 16;
end;
procedure TPanel.Paint;
var
r: TRect;
const
Alignments: array[TAlignment] of integer = (DT_LEFT, DT_RIGHT, DT_CENTER);
begin
if not FEnableHeader then
begin
inherited;
Exit;
end;
Canvas.Pen.Color := FBorderColor;
Canvas.Brush.Color := FBorderColor;
Canvas.Brush.Style := bsSolid;
Canvas.FillRect(Rect(FBorderRadius,
0,
ClientWidth - FBorderRadius,
FBorderRadius));
Canvas.Ellipse(Rect(0,
0,
2*FBorderRadius,
2*FBorderRadius));
Canvas.Ellipse(Rect(ClientWidth - 2*FBorderRadius,
0,
ClientWidth,
2*FBorderRadius));
Canvas.Brush.Color := Color;
Canvas.Rectangle(Rect(0,
FBorderRadius,
ClientWidth,
ClientHeight));
Canvas.Font.Assign(Self.Font);
r := Rect(FBorderRadius, 0, ClientWidth - FBorderRadius, FBorderRadius);
Canvas.Brush.Style := bsClear;
DrawText(Canvas.Handle,
PChar(Caption),
length(Caption),
r,
DT_SINGLELINE or DT_LEFT or DT_VCENTER or DT_END_ELLIPSIS or Alignments[Alignment]);
end;
procedure TPanel.SetBorderColor(BorderColor: TColor);
begin
if FBorderColor <> BorderColor then
begin
FBorderColor := BorderColor;
Invalidate;
end;
end;
procedure TPanel.SetBorderRadius(BorderRadius: integer);
begin
if FBorderRadius <> BorderRadius then
begin
FBorderRadius := BorderRadius;
Invalidate;
end;
end;
procedure TPanel.SetEnableHeader(const Value: boolean);
begin
FEnableHeader := Value;
if FEnableHeader then
BevelOuter :=bvNone
else
BevelOuter :=bvRaised;
Invalidate;
end;
end.RE: كمبوبوكس مع الهيدر - salah07230 - 26-02-2023 بارك الله فيك اخي Ndagor جزاك الله خيرا حلت المشكلة بفضلك |