⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dialogimageselection.pas

📁 DBDesigner 4 is a database design system that integrates database design, modelling, creation and ma
💻 PAS
字号:
//----------------------------------------------------------------------------------------------------------------------

//

// This file is part of the SimpleWebFront-DBDesigner4-Plugin.

// Copyright (C) 2003 Michael Zinner,Bayer Ulrich

//

// The SimpleWebFront-DBDesigner4-Plugin is free software; you can redistribute it and/or modify

// it under the terms of the GNU General Public License as published by

// the Free Software Foundation; either version 2 of the License, or

// (at your option) any later version.

//

// SimpleWebFront-DBDesigner4-Plugin is distributed in the hope that it will be useful,

// but WITHOUT ANY WARRANTY; without even the implied warranty of

// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

// GNU General Public License for more details.



// You should have received a copy of the GNU General Public License

// along with DBDesigner4; if not, write to the Free Software

// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

//

//----------------------------------------------------------------------------------------------------------------------



unit DialogImageSelection;



interface



uses

  SysUtils, Types, Classes, Variants, QTypes, QGraphics, QControls, QForms, 

  QDialogs, QStdCtrls, QExtCtrls, QButtons, QComCtrls, QFileCtrls, QGrids;



type

  TImageSelectionForm = class(TForm)

    ImgDrawGrid: TDrawGrid;

    DirectoryTreeView: TDirectoryTreeView;

    Label1: TLabel;

    Label2: TLabel;

    SubmitBtn: TSpeedButton;

    CancelBtn: TSpeedButton;

    Bevel1: TBevel;

    procedure FormCreate(Sender: TObject);

    procedure FormDestroy(Sender: TObject);

    procedure SetData(InitialDir: string);

    procedure ImgDrawGridDrawCell(Sender: TObject; ACol, ARow: Integer;

      Rect: TRect; State: TGridDrawState);

    procedure DirectoryTreeViewItemClick(Sender: TObject;

      Button: TMouseButton; Node: TTreeNode; const Pt: TPoint);

    procedure ImgDrawGridSelectCell(Sender: TObject; ACol, ARow: Integer;

      var CanSelect: Boolean);

    procedure SubmitBtnClick(Sender: TObject);

    procedure CancelBtnClick(Sender: TObject);

    procedure ImgDrawGridDblClick(Sender: TObject);

  private

    { Private declarations }

    ImgList: TList;

    ImageFileNameList: TStringList;

  public

    { Public declarations }

    selectedPicture: TPicture;

    selectedFileName: string;

  end;



var

  ImageSelectionForm: TImageSelectionForm;



implementation



{$R *.xfm}



procedure TImageSelectionForm.FormCreate(Sender: TObject);

begin

  ImgList:=TList.Create;

  ImageFileNameList:=TStringList.Create;

  {$IFDEF LINUX}

    DirectoryTreeView.RootDirectory := '/';

  {$ENDIF}

end;



procedure TImageSelectionForm.FormDestroy(Sender: TObject);

begin

  ImgList.Free;

  ImageFileNameList.Free;

end;



procedure TImageSelectionForm.SetData(InitialDir: string);

begin

  //Always end with /

  if(Copy(InitialDir, Length(InitialDir), 1)<>PathDelim)then

    InitialDir:=InitialDir+PathDelim;



  DirectoryTreeView.Directory:=InitialDir;

  DirectoryTreeViewItemClick(self, mbLeft, nil, Point(0, 0));

end;



procedure TImageSelectionForm.ImgDrawGridDrawCell(Sender: TObject; ACol,

  ARow: Integer; Rect: TRect; State: TGridDrawState);

var pos: integer;

  theRect: TRect;

begin

  pos:=ACol+ARow*6;



  if(pos<ImgList.Count)then

  begin

    ImgDrawGrid.Canvas.Brush.Color:=clWhite;

    ImgDrawGrid.Canvas.Pen.Color:=clWhite;

    ImgDrawGrid.Canvas.Rectangle(Rect);



    theRect.Left:=Rect.Left+1;

    theRect.Top:=Rect.Top+1;

    theRect.Right:=theRect.Left+64;

    theRect.Bottom:=theRect.Top+64;

    ImgDrawGrid.Canvas.StretchDraw(theRect, TPicture(ImgList[pos]).Bitmap);



    theRect.Bottom:=theRect.Bottom+14;

    ImgDrawGrid.Canvas.TextRect(theRect, theRect.Left, theRect.Top+64+1, ExtractFileName(ImageFileNameList[Pos]));

  end;

end;



procedure TImageSelectionForm.DirectoryTreeViewItemClick(Sender: TObject;

  Button: TMouseButton; Node: TTreeNode; const Pt: TPoint);

var i: integer;

  sr: TSearchRec;

  thePic: TPicture;

  CanSelect: Boolean;

  var searchMask : String;

begin

  ImgDrawGrid.RowCount:=0;



  //Clear old images

  for i:=0 to ImgList.Count-1 do

    TPicture(ImgList[i]).Free;

  ImgList.Clear;

  ImageFileNameList.Clear;







  //Get Images

  {$IFDEF MSWINDOWS}

    searchMask := IncludeTrailingPathDelimiter(DirectoryTreeView.Directory)+'*.*';

  {$ELSE}

    searchMask := IncludeTrailingPathDelimiter(DirectoryTreeView.Directory)+'*';

  {$ENDIF}

  if FindFirst(searchMask, faDirectory, sr) = 0 then

  begin

    repeat

      if (sr.Attr and faDirectory) = 0 then

      begin

        //Ignore . and ..

        if(Copy(sr.name, 1, 1)='.')then

          continue;



        if(CompareText(ExtractFileExt(sr.name), '.png')=0)or

          (CompareText(ExtractFileExt(sr.name), '.bmp')=0)then

        begin

          thePic:=TPicture.Create;

          thePic.LoadFromFile(IncludeTrailingPathDelimiter(DirectoryTreeView.Directory)+sr.name);



          ImgList.Add(thePic);

          ImageFileNameList.Add(IncludeTrailingPathDelimiter(DirectoryTreeView.Directory)+sr.name);

        end;

      end;

    until FindNext(sr) <> 0;

    FindClose(sr);

  end;



  ImgDrawGrid.RowCount:=Trunc((ImgList.Count+5)/6);

  if(ImgList.Count<6)then

    ImgDrawGrid.ColCount:=ImgList.Count

  else

    ImgDrawGrid.ColCount:=6;



  ImgDrawGrid.Refresh;

  ImgDrawGridSelectCell(Self, 0, 0, CanSelect);

end;



procedure TImageSelectionForm.ImgDrawGridSelectCell(Sender: TObject; ACol,

  ARow: Integer; var CanSelect: Boolean);

begin

  SubmitBtn.Enabled:=(ACol+ARow*6<ImgList.Count);

  if(SubmitBtn.Enabled)then

  begin

    selectedPicture:=TPicture(ImgList[ACol+ARow*6]);

    selectedFileName:=ImageFileNameList[ACol+ARow*6];

  end;

end;



procedure TImageSelectionForm.SubmitBtnClick(Sender: TObject);

begin

  ModalResult:=mrOK;

end;



procedure TImageSelectionForm.CancelBtnClick(Sender: TObject);

begin

  ModalResult:=mrCancel;

end;



procedure TImageSelectionForm.ImgDrawGridDblClick(Sender: TObject);

begin

  if(SubmitBtn.Enabled)then

    SubmitBtnClick(self);

end;



end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -