mirror of
				https://gitlab.com/freepascal.org/lazarus/lazarus.git
				synced 2025-10-31 17:41:37 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			103 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
| {
 | |
|  *****************************************************************************
 | |
|   See the file COPYING.modifiedLGPL.txt, included in this distribution,
 | |
|   for details about the license.
 | |
|  *****************************************************************************
 | |
| 
 | |
|   Author: Mattias Gaertner
 | |
| 
 | |
|   Abstract:
 | |
|     Dialog for the TStrings property editor.
 | |
| }
 | |
| unit StringsPropEditDlg;
 | |
| 
 | |
| {$mode objfpc}{$H+}
 | |
| 
 | |
| interface
 | |
| 
 | |
| uses
 | |
|   Classes, SysUtils, Forms, Controls, Buttons, Dialogs, StdCtrls,
 | |
|   TextTools, ObjInspStrConsts, ExtCtrls, ButtonPanel, LazUTF8;
 | |
|   
 | |
| type
 | |
| 
 | |
|   { TStringsPropEditorFrm }
 | |
| 
 | |
|   TStringsPropEditorFrm = class(TForm)
 | |
|     BtnPanel: TButtonPanel;
 | |
|     StatusLabel: TLabel;
 | |
|     SortButton: TButton;
 | |
|     TextGroupBox: TGroupBox;
 | |
|     Memo: TMemo;
 | |
|     procedure FormCreate(Sender: TObject);
 | |
|     procedure MemoChange(Sender: TObject);
 | |
|     procedure SortButtonClick(Sender: TObject);
 | |
|   public
 | |
|     procedure AddButtons; virtual;
 | |
|   end;
 | |
| 
 | |
| 
 | |
| implementation
 | |
| 
 | |
| {$R *.lfm}
 | |
| 
 | |
| { TStringsPropEditorFrm }
 | |
| 
 | |
| procedure TStringsPropEditorFrm.FormCreate(Sender: TObject);
 | |
| begin
 | |
|   Caption := oisStringsEditorDialog;
 | |
|   StatusLabel.Caption := ois0Lines0Chars;
 | |
|   SortButton.Caption := oisSort;
 | |
| 
 | |
|   AddButtons;
 | |
| end;
 | |
| 
 | |
| procedure TStringsPropEditorFrm.MemoChange(Sender: TObject);
 | |
| var
 | |
|   NumChars: Integer;
 | |
|   I: Integer;
 | |
| begin
 | |
|   NumChars := 0;
 | |
|   for I := 0 to Memo.Lines.Count - 1 do Inc(NumChars, Utf8Length(Memo.Lines[I]));
 | |
| 
 | |
|   if Memo.Lines.Count = 1 then
 | |
|     StatusLabel.Caption := Format(ois1LineDChars, [NumChars])
 | |
|   else
 | |
|     StatusLabel.Caption := Format(oisDLinesDChars, [Memo.Lines.Count, NumChars]);
 | |
| end;
 | |
| 
 | |
| procedure TStringsPropEditorFrm.SortButtonClick(Sender: TObject);
 | |
| var
 | |
|   OldText, NewSortedText: String;
 | |
|   SortOnlySelection: Boolean;
 | |
| begin
 | |
|   if not Assigned(ShowSortSelectionDialogFunc) then
 | |
|   begin
 | |
|     SortButton.Enabled := False;
 | |
|     Exit;
 | |
|   end;
 | |
| 
 | |
|   SortOnlySelection := True;
 | |
|   OldText := Memo.SelText;
 | |
|   if OldText = '' then
 | |
|   begin
 | |
|     SortOnlySelection := False;
 | |
|     OldText := Memo.Lines.Text;
 | |
|   end;
 | |
| 
 | |
|   NewSortedText:='';
 | |
|   if ShowSortSelectionDialogFunc(OldText, nil, NewSortedText) <> mrOk then Exit;
 | |
|   if SortOnlySelection then
 | |
|     Memo.SelText := NewSortedText
 | |
|   else
 | |
|     Memo.Lines.Text := NewSortedText;
 | |
| end;
 | |
| 
 | |
| procedure TStringsPropEditorFrm.AddButtons;
 | |
| begin
 | |
|   //
 | |
| end;
 | |
| 
 | |
| end.
 | |
| 
 | 
