You've already forked lazarus-ccr
* Added Unicode demo
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@618 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
176
components/virtualtreeview-unstable/demos/unicode/fmain.lfm
Normal file
176
components/virtualtreeview-unstable/demos/unicode/fmain.lfm
Normal file
@ -0,0 +1,176 @@
|
||||
object MainForm: TMainForm
|
||||
Left = 379
|
||||
Height = 504
|
||||
Top = 166
|
||||
Width = 613
|
||||
Caption = 'Unicode Demo'
|
||||
ClientHeight = 504
|
||||
ClientWidth = 613
|
||||
OnCreate = FormCreate
|
||||
LCLVersion = '0.9.27'
|
||||
object MainNotebook: TNotebook
|
||||
Height = 504
|
||||
Width = 613
|
||||
Align = alClient
|
||||
PageIndex = 0
|
||||
TabOrder = 0
|
||||
object WelcomePage: TPage
|
||||
Caption = 'Welcome Translations'
|
||||
ClientWidth = 605
|
||||
ClientHeight = 478
|
||||
object WelcomeTree: TVirtualStringTree
|
||||
Left = 3
|
||||
Height = 444
|
||||
Top = 31
|
||||
Width = 599
|
||||
Align = alClient
|
||||
BorderSpacing.Around = 3
|
||||
BorderStyle = bsSingle
|
||||
Header.Options = [hoColumnResize, hoDrag, hoVisible]
|
||||
TabOrder = 0
|
||||
OnFreeNode = WelcomeTreeFreeNode
|
||||
OnGetText = WelcomeTreeGetText
|
||||
Columns = <
|
||||
item
|
||||
Width = 200
|
||||
WideText = 'Language'
|
||||
end
|
||||
item
|
||||
Position = 1
|
||||
Width = 200
|
||||
WideText = 'Translation'
|
||||
end>
|
||||
end
|
||||
object WelcomeTopPanel: TPanel
|
||||
Height = 28
|
||||
Width = 605
|
||||
Align = alTop
|
||||
BevelOuter = bvNone
|
||||
ClientHeight = 28
|
||||
ClientWidth = 605
|
||||
TabOrder = 1
|
||||
object ChooseWelcomeFontButton: TButton
|
||||
Left = 4
|
||||
Height = 25
|
||||
Top = 2
|
||||
Width = 120
|
||||
BorderSpacing.Left = 3
|
||||
BorderSpacing.Around = 1
|
||||
Caption = 'Choose Font'
|
||||
OnClick = ChooseWelcomeFontButtonClick
|
||||
TabOrder = 0
|
||||
end
|
||||
end
|
||||
end
|
||||
object LCLTextPage: TPage
|
||||
Caption = 'LCL Text'
|
||||
ClientWidth = 605
|
||||
ClientHeight = 478
|
||||
object LCLTextTree: TVirtualStringTree
|
||||
Left = 3
|
||||
Height = 440
|
||||
Top = 3
|
||||
Width = 272
|
||||
BorderSpacing.Around = 3
|
||||
BorderStyle = bsSingle
|
||||
Header.MainColumn = -1
|
||||
Header.Options = [hoColumnResize, hoDrag]
|
||||
TabOrder = 0
|
||||
TreeOptions.MiscOptions = [toAcceptOLEDrop, toEditable, toFullRepaintOnResize, toInitOnSave, toToggleOnDblClick, toWheelPanning]
|
||||
OnFreeNode = LCLTextTreeFreeNode
|
||||
OnGetText = LCLTextTreeGetText
|
||||
OnNewText = LCLTextTreeNewText
|
||||
Columns = <>
|
||||
end
|
||||
object AddEditTextButton: TButton
|
||||
Left = 476
|
||||
Height = 25
|
||||
Top = 2
|
||||
Width = 120
|
||||
Caption = 'Add Text'
|
||||
OnClick = AddEditTextButtonClick
|
||||
TabOrder = 1
|
||||
end
|
||||
object TextEdit: TEdit
|
||||
Left = 284
|
||||
Height = 23
|
||||
Top = 2
|
||||
Width = 184
|
||||
TabOrder = 2
|
||||
end
|
||||
object TextComboBox: TComboBox
|
||||
Left = 284
|
||||
Height = 21
|
||||
Top = 58
|
||||
Width = 184
|
||||
ItemHeight = 13
|
||||
Items.Strings = (
|
||||
'Não'
|
||||
'Coração'
|
||||
'Sim'
|
||||
)
|
||||
TabOrder = 3
|
||||
end
|
||||
object AddComboTextButton: TButton
|
||||
Left = 476
|
||||
Height = 25
|
||||
Top = 58
|
||||
Width = 120
|
||||
Caption = 'Add Text'
|
||||
OnClick = AddComboTextButtonClick
|
||||
TabOrder = 4
|
||||
end
|
||||
object TextListBox: TListBox
|
||||
Left = 284
|
||||
Height = 112
|
||||
Top = 98
|
||||
Width = 184
|
||||
Items.Strings = (
|
||||
'Não'
|
||||
'Coração'
|
||||
'Sim'
|
||||
)
|
||||
ItemHeight = 13
|
||||
TabOrder = 5
|
||||
end
|
||||
object AddListTextButton: TButton
|
||||
Left = 476
|
||||
Height = 25
|
||||
Top = 98
|
||||
Width = 120
|
||||
Caption = 'Add Text'
|
||||
OnClick = AddListTextButtonClick
|
||||
TabOrder = 6
|
||||
end
|
||||
object TextMemo: TMemo
|
||||
Left = 284
|
||||
Height = 138
|
||||
Top = 234
|
||||
Width = 184
|
||||
TabOrder = 7
|
||||
end
|
||||
object AddMemoTextButton: TButton
|
||||
Left = 476
|
||||
Height = 25
|
||||
Top = 234
|
||||
Width = 120
|
||||
Caption = 'Add Text'
|
||||
OnClick = AddMemoTextButtonClick
|
||||
TabOrder = 8
|
||||
end
|
||||
object ClearLCLTextTreeButton: TButton
|
||||
Left = 3
|
||||
Height = 25
|
||||
Top = 449
|
||||
Width = 97
|
||||
Caption = 'Clear'
|
||||
OnClick = ClearLCLTextTreeButtonClick
|
||||
TabOrder = 9
|
||||
end
|
||||
end
|
||||
end
|
||||
object FontDialog1: TFontDialog
|
||||
left = 136
|
||||
top = 24
|
||||
end
|
||||
end
|
217
components/virtualtreeview-unstable/demos/unicode/fmain.pas
Normal file
217
components/virtualtreeview-unstable/demos/unicode/fmain.pas
Normal file
@ -0,0 +1,217 @@
|
||||
unit fMain;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
|
||||
ExtCtrls, VirtualTrees, StdCtrls, LCLProc;
|
||||
|
||||
type
|
||||
|
||||
{ TMainForm }
|
||||
|
||||
TMainForm = class(TForm)
|
||||
AddEditTextButton: TButton;
|
||||
AddComboTextButton: TButton;
|
||||
AddListTextButton: TButton;
|
||||
AddMemoTextButton: TButton;
|
||||
ClearLCLTextTreeButton: TButton;
|
||||
ChooseWelcomeFontButton: TButton;
|
||||
TextMemo: TMemo;
|
||||
TextListBox: TListBox;
|
||||
TextComboBox: TComboBox;
|
||||
TextEdit: TEdit;
|
||||
FontDialog1: TFontDialog;
|
||||
MainNotebook: TNotebook;
|
||||
LCLTextPage: TPage;
|
||||
LCLTextTree: TVirtualStringTree;
|
||||
WelcomeTopPanel: TPanel;
|
||||
WelcomeTree: TVirtualStringTree;
|
||||
WelcomePage: TPage;
|
||||
procedure AddComboTextButtonClick(Sender: TObject);
|
||||
procedure AddEditTextButtonClick(Sender: TObject);
|
||||
procedure AddListTextButtonClick(Sender: TObject);
|
||||
procedure AddMemoTextButtonClick(Sender: TObject);
|
||||
procedure ChooseWelcomeFontButtonClick(Sender: TObject);
|
||||
procedure ClearLCLTextTreeButtonClick(Sender: TObject);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure LCLTextTreeFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
|
||||
procedure LCLTextTreeGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
|
||||
Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString);
|
||||
procedure LCLTextTreeNewText(Sender: TBaseVirtualTree; Node: PVirtualNode;
|
||||
Column: TColumnIndex; const NewText: WideString);
|
||||
procedure WelcomeTreeFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
|
||||
procedure WelcomeTreeGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
|
||||
Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString);
|
||||
private
|
||||
procedure AddLCLText(const AText: String);
|
||||
{ private declarations }
|
||||
procedure AddWelcomeString(const WelcomeString: String);
|
||||
public
|
||||
{ public declarations }
|
||||
end;
|
||||
|
||||
var
|
||||
MainForm: TMainForm;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
strutils;
|
||||
|
||||
type
|
||||
TWelcomeData = record
|
||||
Language: String;
|
||||
Translation: String;
|
||||
end;
|
||||
PWelcomeData = ^TWelcomeData;
|
||||
|
||||
TLCLTextData = record
|
||||
Text: String;
|
||||
end;
|
||||
PLCLTextData = ^TLCLTextData;
|
||||
|
||||
{ TMainForm }
|
||||
|
||||
procedure TMainForm.FormCreate(Sender: TObject);
|
||||
var
|
||||
WelcomeList: TStrings;
|
||||
i: Integer;
|
||||
begin
|
||||
LCLTextTree.NodeDataSize := SizeOf(TLCLTextData);
|
||||
WelcomeTree.NodeDataSize := SizeOf(TWelcomeData);
|
||||
//Load the welcome list from an UTF-8 encoded file
|
||||
WelcomeList := TStringList.Create;
|
||||
try
|
||||
WelcomeList.LoadFromFile('welcome.txt');
|
||||
WelcomeTree.BeginUpdate;
|
||||
for i := 0 to WelcomeList.Count - 1 do
|
||||
AddWelcomeString(WelcomeList[i]);
|
||||
WelcomeTree.EndUpdate;
|
||||
finally
|
||||
WelcomeList.Destroy;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainForm.LCLTextTreeFreeNode(Sender: TBaseVirtualTree;
|
||||
Node: PVirtualNode);
|
||||
var
|
||||
Data: PLCLTextData;
|
||||
begin
|
||||
Data := Sender.GetNodeData(Node);
|
||||
Data^.Text := '';
|
||||
end;
|
||||
|
||||
procedure TMainForm.LCLTextTreeGetText(Sender: TBaseVirtualTree;
|
||||
Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
|
||||
var CellText: WideString);
|
||||
var
|
||||
Data: PLCLTextData;
|
||||
begin
|
||||
Data := Sender.GetNodeData(Node);
|
||||
CellText := UTF8Decode(Data^.Text);
|
||||
end;
|
||||
|
||||
procedure TMainForm.LCLTextTreeNewText(Sender: TBaseVirtualTree;
|
||||
Node: PVirtualNode; Column: TColumnIndex; const NewText: WideString);
|
||||
var
|
||||
Data: PLCLTextData;
|
||||
begin
|
||||
Data := Sender.GetNodeData(Node);
|
||||
Data^.Text := NewText;
|
||||
end;
|
||||
|
||||
procedure TMainForm.ChooseWelcomeFontButtonClick(Sender: TObject);
|
||||
begin
|
||||
if FontDialog1.Execute then
|
||||
WelcomeTree.Font := FontDialog1.Font;
|
||||
end;
|
||||
|
||||
procedure TMainForm.ClearLCLTextTreeButtonClick(Sender: TObject);
|
||||
begin
|
||||
LCLTextTree.Clear;
|
||||
end;
|
||||
|
||||
procedure TMainForm.AddEditTextButtonClick(Sender: TObject);
|
||||
begin
|
||||
AddLCLText(TextEdit.Text);
|
||||
end;
|
||||
|
||||
procedure TMainForm.AddListTextButtonClick(Sender: TObject);
|
||||
begin
|
||||
if TextListBox.ItemIndex <> -1 then
|
||||
AddLCLText(TextListBox.Items[TextListBox.ItemIndex]);
|
||||
end;
|
||||
|
||||
procedure TMainForm.AddMemoTextButtonClick(Sender: TObject);
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
for i := 0 to TextMemo.Lines.Count - 1 do
|
||||
AddLCLText(TextMemo.Lines[i]);
|
||||
end;
|
||||
|
||||
procedure TMainForm.AddComboTextButtonClick(Sender: TObject);
|
||||
begin
|
||||
AddLCLText(TextComboBox.Text);
|
||||
end;
|
||||
|
||||
procedure TMainForm.WelcomeTreeFreeNode(Sender: TBaseVirtualTree;
|
||||
Node: PVirtualNode);
|
||||
var
|
||||
Data: PWelcomeData;
|
||||
begin
|
||||
Data := Sender.GetNodeData(Node);
|
||||
Data^.Language := '';
|
||||
Data^.Translation := '';
|
||||
end;
|
||||
|
||||
procedure TMainForm.WelcomeTreeGetText(Sender: TBaseVirtualTree;
|
||||
Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
|
||||
var CellText: WideString);
|
||||
var
|
||||
Data: PWelcomeData;
|
||||
begin
|
||||
Data := Sender.GetNodeData(Node);
|
||||
case Column of
|
||||
0: CellText := UTF8Decode(Data^.Language);
|
||||
1: CellText := UTF8Decode(Data^.Translation);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainForm.AddLCLText(const AText: String);
|
||||
var
|
||||
Data: PLCLTextData;
|
||||
Node: PVirtualNode;
|
||||
begin
|
||||
with LCLTextTree do
|
||||
begin
|
||||
Node := AddChild(nil);
|
||||
Data := GetNodeData(Node);
|
||||
Data^.Text := AText;
|
||||
ValidateNode(Node, False);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainForm.AddWelcomeString(const WelcomeString: String);
|
||||
var
|
||||
Data: PWelcomeData;
|
||||
Node: PVirtualNode;
|
||||
begin
|
||||
with WelcomeTree do
|
||||
begin
|
||||
Node := AddChild(nil);
|
||||
Data := GetNodeData(Node);
|
||||
Data^.Language := ExtractWord(1, WelcomeString, [Chr(9)]);
|
||||
Data^.Translation := ExtractWord(2, WelcomeString, [Chr(9)]);
|
||||
ValidateNode(Node, False);
|
||||
end;
|
||||
end;
|
||||
|
||||
initialization
|
||||
{$I fmain.lrs}
|
||||
|
||||
end.
|
||||
|
@ -0,0 +1,70 @@
|
||||
<?xml version="1.0"?>
|
||||
<CONFIG>
|
||||
<ProjectOptions>
|
||||
<PathDelim Value="\"/>
|
||||
<Version Value="6"/>
|
||||
<General>
|
||||
<Flags>
|
||||
<AlwaysBuild Value="False"/>
|
||||
</Flags>
|
||||
<SessionStorage Value="InProjectDir"/>
|
||||
<MainUnit Value="0"/>
|
||||
<TargetFileExt Value=".exe"/>
|
||||
<Icon Value="0"/>
|
||||
<UseXPManifest Value="True"/>
|
||||
</General>
|
||||
<VersionInfo>
|
||||
<ProjectVersion Value=""/>
|
||||
</VersionInfo>
|
||||
<PublishOptions>
|
||||
<Version Value="2"/>
|
||||
<IgnoreBinaries Value="False"/>
|
||||
<IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
|
||||
<ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
|
||||
</PublishOptions>
|
||||
<RunParams>
|
||||
<local>
|
||||
<FormatVersion Value="1"/>
|
||||
<LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
|
||||
</local>
|
||||
</RunParams>
|
||||
<RequiredPackages Count="2">
|
||||
<Item1>
|
||||
<PackageName Value="virtualtreeview_package"/>
|
||||
<MinVersion Major="4" Minor="5" Release="1" Valid="True"/>
|
||||
</Item1>
|
||||
<Item2>
|
||||
<PackageName Value="LCL"/>
|
||||
</Item2>
|
||||
</RequiredPackages>
|
||||
<Units Count="2">
|
||||
<Unit0>
|
||||
<Filename Value="unicode.lpr"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="unicode"/>
|
||||
</Unit0>
|
||||
<Unit1>
|
||||
<Filename Value="fmain.pas"/>
|
||||
<ComponentName Value="MainForm"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<ResourceFilename Value="fmain.lrs"/>
|
||||
<UnitName Value="fMain"/>
|
||||
</Unit1>
|
||||
</Units>
|
||||
</ProjectOptions>
|
||||
<CompilerOptions>
|
||||
<Version Value="8"/>
|
||||
<PathDelim Value="\"/>
|
||||
<Linking>
|
||||
<Options>
|
||||
<Win32>
|
||||
<GraphicApplication Value="True"/>
|
||||
</Win32>
|
||||
</Options>
|
||||
</Linking>
|
||||
<Other>
|
||||
<CompilerPath Value="$(CompPath)"/>
|
||||
</Other>
|
||||
</CompilerOptions>
|
||||
</CONFIG>
|
@ -0,0 +1,21 @@
|
||||
program unicode;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
uses
|
||||
{$IFDEF UNIX}{$IFDEF UseCThreads}
|
||||
cthreads,
|
||||
{$ENDIF}{$ENDIF}
|
||||
Interfaces, // this includes the LCL widgetset
|
||||
Forms
|
||||
{ you can add units after this }, fMain, LResources, virtualtreeview_package;
|
||||
|
||||
{$IFDEF WINDOWS}{$R unicode.rc}{$ENDIF}
|
||||
|
||||
begin
|
||||
{$I unicode.lrs}
|
||||
Application.Initialize;
|
||||
Application.CreateForm(TMainForm, MainForm);
|
||||
Application.Run;
|
||||
end.
|
||||
|
@ -0,0 +1,35 @@
|
||||
Arabic مرحباً
|
||||
Armenian բարի գալուստ
|
||||
Azeri xoş gəlmişsiniz
|
||||
Catalan benvinguts
|
||||
Cherokee ᎤᎵᎮᎵᏍᏗ
|
||||
Chinese (trad.) 歡迎
|
||||
Chinese (simp.) 欢迎
|
||||
Czech vítejte
|
||||
Danish velkommen
|
||||
Dutch welkom
|
||||
English welcome
|
||||
Esperanto bonveno
|
||||
Estonian tere tulemast
|
||||
Finnish tervetuloa
|
||||
French bienvenue
|
||||
German willkommen
|
||||
Greek καλώς ορίσατε
|
||||
Hebrew ברוכים הבאים
|
||||
Italian benvenuti
|
||||
Japanese ようこそ
|
||||
Latin salve
|
||||
Norwegian velkommen
|
||||
Persian خوش آمدید
|
||||
Polish zapraszamy
|
||||
Portuguese bem-vindo
|
||||
Romanian bun venit
|
||||
Sindhi ڀلي ڪري آيا
|
||||
Slovak víta vás
|
||||
Slovenian dobrodošli
|
||||
Spanish bienvenido
|
||||
Swahili karibu
|
||||
Swedish välkommen
|
||||
Turkish hoş geldiniz
|
||||
Uyghur خۇش كەپسىز
|
||||
Zulu sawubona
|
Reference in New Issue
Block a user