kolmck/mckFileFilterEditor.pas
dkolmck 829d5adfe5 Первая ревизия основана на 2.88+ =)
отличия от 2.88:
+ procedure TControl.TBClear;  {* |<#toolbar>     Deletes all buttons. Dufa }
+ property TControl.TBButtonLParam[const Idx: Integer]: DWORD read TBGetButtonLParam write TBSetButtonLParam;
    {* |<#toolbar>  Allows to access/change LParam. Dufa }
+ добавлен MCKfakeClasses200x.inc для исправления глюка с ложными МСК варнингами(в версиях 2006-2009) // Dufa
* DefFont = Tahoma
* procedure TDirList.ScanDirectory исправлена утечка памяти // Dufa
* function TControl.WndProcTransparent исправлено "странное" поведение приложения, при кол-во форм >= 2   // Galkov
* procedure TControl.SetCurIndex устранен AV // Galkov
* visual_xp_styles.inc:  function IsManifestFilePresent : boolean; исправлена ошибка при работе с библиотеками //Dufa

*** возможно что-то забыл.... %)

git-svn-id: https://svn.code.sf.net/p/kolmck/code@3 91bb2d04-0c0c-4d2d-88a5-bbb6f4c1fa07
2009-08-05 17:45:57 +00:00

141 lines
4.0 KiB
ObjectPascal

unit mckFileFilterEditor;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids;
type
TfmFileFilterEditor = class(TForm)
StringGrid1: TStringGrid;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
Filter: String;
Constructor Create( AOwner: TComponent ); override;
end;
var
fmFileFilterEditor: TfmFileFilterEditor;
implementation
Constructor TfmFileFilterEditor.Create( AOwner: TComponent );
begin
CreateNew(AOwner);
Left := 228 ;
Top := 107 ;
Width := 452 ;
Height := 193 ;
Caption := 'fmFileFilterEditor' ;
Color := clBtnFace ;
//Font.Charset := DEFAULT_CHARSET ;
Font.Color := clWindowText ;
Font.Height := -13 ;
Font.Name := 'MS Sans Serif' ;
Font.Style := [] ;
//OldCreateOrder := False ;
Scaled := False ;
OnActivate := FormActivate ;
StringGrid1 := TStringGrid.Create( Self );
StringGrid1.Parent := Self;
StringGrid1.Left := 6 ;
StringGrid1.Top := 8 ;
StringGrid1.Width := 429 ;
StringGrid1.Height := 120 ;
StringGrid1.ColCount := 2 ;
StringGrid1.DefaultColWidth := 204 ;
StringGrid1.DefaultRowHeight := 18 ;
StringGrid1.FixedCols := 0 ;
StringGrid1.RowCount := 50 ;
StringGrid1.Options := [ goFixedVertLine, goFixedHorzLine, goVertLine,
goHorzLine, goDrawFocusSelected, goRowMoving, goEditing,
goAlwaysShowEditor, goThumbTracking];
StringGrid1.ScrollBars := ssVertical;
StringGrid1.TabOrder := 0 ;
Button1 := TButton.Create( Self );
Button1.Parent := Self;
Button1.Left := 272 ;
Button1.Top := 136 ;
Button1.Width := 75 ;
Button1.Height := 25 ;
Button1.Caption := 'OK' ;
Button1.OnClick := Button1Click;
Button2 := TButton.Create( Self );
Button2.Parent := Self;
Button2.Left := 360 ;
Button2.Top := 136 ;
Button2.Width := 75 ;
Button2.Height := 25 ;
Button2.Caption := 'Cancel' ;
Button2.OnClick := Button2Click;
StringGrid1.Cols[ 0 ].Text := 'Filter name';
StringGrid1.Cols[ 1 ].Text := 'Mask list';
end;
procedure TfmFileFilterEditor.Button1Click(Sender: TObject);
var I: Integer;
X, Y: String;
begin
Filter := '';
for I := 1 to StringGrid1.RowCount - 1 do
begin
X := StringGrid1.Cells[ 0, I ];
Y := StringGrid1.Cells[ 1, I ];
if (X = '') and (Y = '') then
continue;
if Filter <> '' then
Filter := Filter + '|';
Filter := Filter + X + '|' + Y;
end;
ModalResult := mrOK;
end;
procedure TfmFileFilterEditor.Button2Click(Sender: TObject);
begin
ModalResult := mrCancel;
end;
procedure TfmFileFilterEditor.FormActivate(Sender: TObject);
var I, J: Integer;
X, Y: String;
begin
J := 1;
while Filter <> '' do
begin
I := pos( '|', Filter );
if I > 0 then
begin
X := Copy( Filter, 1, I - 1 );
Filter := Copy( Filter, I + 1, MaxInt );
I := pos( '|', Filter );
if I > 0 then
begin
Y := Copy( Filter, 1, I - 1 );
Filter := Copy( Filter, I + 1, MaxInt );
end
else
begin
Y := Filter;
Filter := '';
end;
end
else break;
StringGrid1.Cells[ 0, J ] := X;
StringGrid1.Cells[ 1, J ] := Y;
Inc( J );
if StringGrid1.RowCount <= J then
StringGrid1.RowCount := J + 1;
end;
StringGrid1.RowCount := J + 50;
end;
end.