Browse Source

unit for toolbar functions

Unknown 6 năm trước cách đây
mục cha
commit
13f5fe64f9
4 tập tin đã thay đổi với 156 bổ sung107 xóa
  1. 147 0
      vectoredit/lctoolbars.pas
  2. 2 105
      vectoredit/umain.pas
  3. 6 1
      vectoredit/vectoredit.lpi
  4. 1 1
      vectoredit/vectoredit.lpr

+ 147 - 0
vectoredit/lctoolbars.pas

@@ -0,0 +1,147 @@
+unit LCToolbars;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+  Classes, SysUtils, Controls, ComCtrls, Types, LResources;
+
+function CreateToolBar(AImages: TImageList; AOwner: TComponent = nil): TToolbar;
+function GetToolbarSize(AToolbar: TToolbar; APadding: integer = 1): TSize;
+procedure SetToolbarImages(AToolbar: TToolbar; AImages: TImageList);
+procedure EnableDisableToolButtons(AButtons: array of TToolButton; AEnabled: boolean);
+function AddToolbarCheckButton(AToolbar: TToolbar; ACaption: string; AImageIndex: integer;
+          AOnClick: TNotifyEvent; ADown: boolean; AGrouped: boolean = true; ATag: PtrInt = 0): TToolButton;
+function AddToolbarButton(AToolbar: TToolbar; ACaption: string; AImageIndex: integer;
+          AOnClick: TNotifyEvent; ATag: PtrInt = 0): TToolButton;
+function GetResourceStream(AFilename: string): TLazarusResourceStream;
+function GetResourceString(AFilename: string): string;
+procedure LoadToolbarImage(AImages: TImageList; AIndex: integer; AFilename: string);
+
+implementation
+
+uses BGRALazPaint, BGRABitmap, BGRABitmapTypes;
+
+function CreateToolBar(AImages: TImageList; AOwner: TComponent): TToolbar;
+begin
+  result := TToolBar.Create(AOwner);
+  result.Align := alNone;
+  result.Height := AImages.Height + 9;
+  result.ShowHint:= true;
+  result.ShowCaptions:= false;
+  result.Images := AImages;
+end;
+
+function GetToolbarSize(AToolbar: TToolbar; APadding: integer = 1): TSize;
+var
+  i: Integer;
+  r: TRect;
+begin
+  result := Size(APadding,APadding);
+  for i := 0 to AToolbar.ControlCount-1 do
+  begin
+    r := AToolbar.Controls[i].BoundsRect;
+    if r.Right > result.cx then result.cx := r.Right;
+    if r.Bottom > result.cy then result.cy := r.Bottom;
+  end;
+  result.cx += APadding;
+  result.cy += APadding;
+end;
+
+procedure SetToolbarImages(AToolbar: TToolbar; AImages: TImageList);
+begin
+  AToolbar.Images := AImages;
+  AToolbar.ButtonWidth:= AImages.Width+5;
+  AToolbar.ButtonHeight:= AImages.Height+4;
+end;
+
+function GetResourceStream(AFilename: string): TLazarusResourceStream;
+var
+  ext: RawByteString;
+begin
+  ext := UpperCase(ExtractFileExt(AFilename));
+  if (ext<>'') and (ext[1]='.') then Delete(ext,1,1);
+  result := TLazarusResourceStream.Create(ChangeFileExt(AFilename,''), pchar(ext));
+end;
+
+function GetResourceString(AFilename: string): string;
+var
+  res: TLResource;
+  ext: RawByteString;
+begin
+  ext := UpperCase(ExtractFileExt(AFilename));
+  if (ext<>'') and (ext[1]='.') then Delete(ext,1,1);
+  res := LazarusResources.Find(ChangeFileExt(AFilename,''), ext);
+  if assigned(res) then result:= res.Value else result:= '';
+end;
+
+procedure LoadToolbarImage(AImages: TImageList; AIndex: integer; AFilename: string);
+var
+  iconImg: TBGRALazPaintImage;
+  iconFlat: TBGRABitmap;
+  res: TLazarusResourceStream;
+  mem: TMemoryStream;
+begin
+  iconImg := TBGRALazPaintImage.Create;
+  res := GetResourceStream(AFilename);
+  mem:= TMemoryStream.Create;
+  res.SaveToStream(mem);
+  res.Free;
+  mem.Position:= 0;
+  iconImg.LoadFromStream(mem);
+  iconImg.Resample(AImages.Width,AImages.Height,rmFineResample,rfBestQuality);
+  iconFlat := TBGRABitmap.Create(iconImg.Width,iconImg.Height);
+  iconImg.Draw(iconFlat,0,0);
+  if AImages.Count < AIndex then
+    AImages.Replace(AIndex, iconFlat.Bitmap,nil)
+  else
+    AImages.Add(iconFlat.Bitmap,nil);
+  iconFlat.Free;
+  iconImg.Free;
+end;
+
+function AddToolbarCheckButton(AToolbar: TToolbar; ACaption: string; AImageIndex: integer;
+          AOnClick: TNotifyEvent; ADown: boolean; AGrouped: boolean = true; ATag: PtrInt = 0): TToolButton;
+var
+  btn: TToolButton;
+begin
+  btn := TToolButton.Create(AToolbar);
+  btn.Style := tbsCheck;
+  btn.Caption := ACaption;
+  btn.Hint := ACaption;
+  btn.ImageIndex := AImageIndex;
+  btn.Down:= ADown;
+  btn.Grouped := AGrouped;
+  btn.OnClick:= AOnClick;
+  btn.Parent := AToolbar;
+  btn.Tag:= ATag;
+  result := btn;
+end;
+
+function AddToolbarButton(AToolbar: TToolbar; ACaption: string;
+  AImageIndex: integer; AOnClick: TNotifyEvent; ATag: PtrInt): TToolButton;
+var
+  btn: TToolButton;
+begin
+  btn := TToolButton.Create(AToolbar);
+  btn.Style := tbsButton;
+  btn.Caption := ACaption;
+  btn.Hint := ACaption;
+  btn.ImageIndex := AImageIndex;
+  btn.OnClick:= AOnClick;
+  btn.Parent := AToolbar;
+  btn.Tag:= ATag;
+  result := btn;
+end;
+
+procedure EnableDisableToolButtons(AButtons: array of TToolButton; AEnabled: boolean);
+var
+  i: Integer;
+begin
+  for i := 0 to high(AButtons) do
+    AButtons[i].Enabled:= AEnabled;
+end;
+
+end.
+

+ 2 - 105
vectoredit/umain.pas

@@ -315,113 +315,10 @@ var
 
 implementation
 
-uses math, BGRAPen, BGRAThumbnail, BGRAGradientOriginal, uvectorclipboard, LResources;
+uses math, BGRAPen, BGRAThumbnail, BGRAGradientOriginal, uvectorclipboard, LResources, LCToolbars;
 
 {$R *.lfm}
 
-function CreateToolBar(AImages: TImageList): TToolbar;
-begin
-  result := TToolBar.Create(nil);
-  result.Align := alNone;
-  result.Height := AImages.Height + 9;
-  result.ShowHint:= true;
-  result.ShowCaptions:= false;
-  result.Images := AImages;
-end;
-
-function GetToolbarSize(AToolbar: TToolbar; APadding: integer = 1): TSize;
-var
-  i: Integer;
-  r: TRect;
-begin
-  result := Size(APadding,APadding);
-  for i := 0 to AToolbar.ControlCount-1 do
-  begin
-    r := AToolbar.Controls[i].BoundsRect;
-    if r.Right > result.cx then result.cx := r.Right;
-    if r.Bottom > result.cy then result.cy := r.Bottom;
-  end;
-  result.cx += APadding;
-  result.cy += APadding;
-end;
-
-procedure SetToolbarImages(AToolbar: TToolbar; AImages: TImageList);
-begin
-  AToolbar.Images := AImages;
-  AToolbar.ButtonWidth:= AImages.Width+5;
-  AToolbar.ButtonHeight:= AImages.Height+4;
-end;
-
-function GetResourceStream(AFilename: string): TLazarusResourceStream;
-var
-  ext: RawByteString;
-begin
-  ext := UpperCase(ExtractFileExt(AFilename));
-  if (ext<>'') and (ext[1]='.') then Delete(ext,1,1);
-  result := TLazarusResourceStream.Create(ChangeFileExt(AFilename,''), pchar(ext));
-end;
-
-function GetResourceString(AFilename: string): string;
-var
-  res: TLResource;
-  ext: RawByteString;
-begin
-  ext := UpperCase(ExtractFileExt(AFilename));
-  if (ext<>'') and (ext[1]='.') then Delete(ext,1,1);
-  res := LazarusResources.Find(ChangeFileExt(AFilename,''), ext);
-  if assigned(res) then result:= res.Value else result:= '';
-end;
-
-procedure LoadToolIcon(AImages: TImageList; AIndex: integer; AFilename: string);
-var
-  iconImg: TBGRALazPaintImage;
-  iconFlat: TBGRABitmap;
-  res: TLazarusResourceStream;
-  mem: TMemoryStream;
-begin
-  iconImg := TBGRALazPaintImage.Create;
-  res := GetResourceStream(AFilename);
-  mem:= TMemoryStream.Create;
-  res.SaveToStream(mem);
-  res.Free;
-  mem.Position:= 0;
-  iconImg.LoadFromStream(mem);
-  iconImg.Resample(AImages.Width,AImages.Height,rmFineResample,rfBestQuality);
-  iconFlat := TBGRABitmap.Create(iconImg.Width,iconImg.Height);
-  iconImg.Draw(iconFlat,0,0);
-  if AImages.Count < AIndex then
-    AImages.Replace(AIndex, iconFlat.Bitmap,nil)
-  else
-    AImages.Add(iconFlat.Bitmap,nil);
-  iconFlat.Free;
-  iconImg.Free;
-end;
-
-procedure AddToolbarCheckButton(AToolbar: TToolbar; ACaption: string; AImageIndex: integer;
-          AOnClick: TNotifyEvent; ADown: boolean; AGrouped: boolean = true; ATag: PtrInt = 0);
-var
-  btn: TToolButton;
-begin
-  btn := TToolButton.Create(AToolbar);
-  btn.Style := tbsCheck;
-  btn.Caption := ACaption;
-  btn.Hint := ACaption;
-  btn.ImageIndex := AImageIndex;
-  btn.Down:= ADown;
-  btn.Grouped := AGrouped;
-  btn.OnClick:= AOnClick;
-  btn.Parent := AToolbar;
-  btn.Tag:= ATag;
-end;
-
-procedure EnableDisableToolButtons(AButtons: array of TToolButton; AEnabled: boolean);
-var
-  i: Integer;
-begin
-  for i := 0 to high(AButtons) do
-    AButtons[i].Enabled:= AEnabled;
-end;
-
 function LCLKeyToSpecialKey(Key: Word): TSpecialKey;
 var
   sk: TSpecialKey;
@@ -450,7 +347,7 @@ begin
   lst := TStringList.Create;
   lst.CommaText := GetResourceString('vectorimages.lst');
   for i := 0 to lst.Count-1 do
-    LoadToolIcon(vectorImageList, i, lst[i]);
+    LoadToolbarImage(vectorImageList, i, lst[i]);
   lst.Free;
 
   SetToolbarImages(ToolBarFile, vectorImageList);

+ 6 - 1
vectoredit/vectoredit.lpi

@@ -38,7 +38,7 @@
         <PackageName Value="LCL"/>
       </Item3>
     </RequiredPackages>
-    <Units Count="8">
+    <Units Count="9">
       <Unit0>
         <Filename Value="vectoredit.lpr"/>
         <IsPartOfProject Value="True"/>
@@ -79,6 +79,11 @@
         <IsPartOfProject Value="True"/>
         <UnitName Value="LCVectorPolyShapes"/>
       </Unit7>
+      <Unit8>
+        <Filename Value="lctoolbars.pas"/>
+        <IsPartOfProject Value="True"/>
+        <UnitName Value="LCToolbars"/>
+      </Unit8>
     </Units>
   </ProjectOptions>
   <CompilerOptions>

+ 1 - 1
vectoredit/vectoredit.lpr

@@ -10,7 +10,7 @@ uses
   Forms, umain, 
   LCVectororiginal, LCVectorialFill, LCVectorshapes, LCVectorPolyShapes,
   uvectorclipboard,
-  LResources
+  LResources, LCToolbars
   { you can add units after this };
 
 {$R *.res}