delphi4arab منتديات دلفي للعرب
كمبوبوكس مع الهيدر - نسخة قابلة للطباعة

+- 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

السلام عليكم
اين اجد هذا المكون 
[صورة: Sans-titre.png]
عبارة عن كمبوبوكس مع الهيدر
وشكرا


RE: كمبوبوكس مع الهيدر - larbiparadox - 23-02-2023

(23-02-2023, 02:37 PM)salah07230 كتب : السلام عليكم
اين اجد هذا المكون 
[صورة: Sans-titre.png]
عبارة عن كمبوبوكس مع الهيدر
وشكرا

وعليك السلام

على ما أعتقد هي مكونات edit   الخاصة بـAlphaControls هو مكون خاص بـ skin يوجد معاه مكونات edit بالنسبة للإقونات يعمل معها مكون اخر إسمه sCharImageList خاص بقراءة الرموز الموجودة في أنواع من الخطوط مثل Font Awesome و توجد خطوط إحتارفية مثل Font Awesome Pro يعتمد عليها خاصة أصحاب مواقع الانترنت لأن لها مزايا عدة

مثال : هذه صورة من برنامج عملت عليه

[صورة: 166367268.jpg]


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

وجدت الحل لكني لم استطع تطبيقة فهل من مساعدة  بمتال تطبيقي وشكرا
[صورة: customcaptionpanel.png]
كود :
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
جزاك الله خيرا
حلت المشكلة بفضلك