Das Tycoonuserinterface das von der Grafiklibrary vipgfx abhängt, dient als speicherplatzsparende Alternative zur LCL, die erheblich mehr Ressourcen erfordert, die vielleicht bei Paspberry pi nicht so üppig vorhanden sind. VipGfx bietet schnelle Grafik die sogar für die Spieleprogrammierung geeignet ist. Das Tycoonuserinterface ist eine GUI Widget Klassenbibliothek die grundlegende GUI Elemente wie Fenster, Buttons, Checkbpxen, RadioButtons, Images usw. bereit stellt. Die Verwendung ist einfach und die Bibliothken enthalten zahlreiche Beispiele für ihre Anwendung. Als Fontformat wird das TrueType Format verwendet.
Das Ganze funktioniert für Windows und Linux uns Android.
Das Tycoonuserinterface gibt es hier: https://sourceforge.net/p/tycoonuserint ... ster/tree/
Und die vorausgesetzte vipgfx Grafikbibliothek gibt es hier: https://sourceforge.net/p/vipgfx/code/ci/master/tree/
Im nächsten Beitrag seht Ihr die Verwendung der Bibliothek in einem Beipielprogramm
tycoonuserinterface und vipgfx
-
- Beiträge: 61
- Registriert: Do 20. Apr 2023, 18:25
tycoonuserinterface und vipgfx
Zuletzt geändert von multiplatform-coder am Do 13. Mär 2025, 20:02, insgesamt 2-mal geändert.
-
- Beiträge: 61
- Registriert: Do 20. Apr 2023, 18:25
Re: tycoonuserinterface und vipgfx
Code: Alles auswählen
{$MODE OBJFPC}{$H+}
uses
{$IFDEF UNIX}cthreads,{$ENDIF}
classes,SyncObjs,
tools,vipgfx,myTTF,
sysutils,
tui.Core,tui.Button,tui.TextField,tui.DropBox,tui.EditField,tui.SelectBox,tui.ScrollBarHorizontal,tui.ScrollBarVertical,tui.MenuHorizontal,tui.MenuVertical,tui.CheckBox,tui.ProgressBar,tui.ButtonUP,tui.ButtonDOWN,tui.SelectableImage,tui.MiddleScrollBox2Entries,{tui.EditableSelectBox,}
tui.Dialog.MessageBox,tui.Dialog.LoadFile,tui.Dialog.SaveFile;
type
TmyStaticBox = class
aBox : TtuiBox;
constructor Create;
end;
TmyExitBox = class
aBox : TtuiBox;
aButton : TtuiButton;
aTextField : TtuiTextField;
constructor Create;
procedure execProcButton(const param:string);
end;
TmyDropBox = class
aBox : TtuiBox;
aDropBox : TtuiDropBox;
constructor Create;
procedure ExecProcDropBox(const param:string);
procedure ExecProcCheckBox(const param:string);
end;
TmyEditBox = class
aBox : TtuiBox;
aButton : TtuiButton;
aTextField : TtuiTextField; //Entspricht TLabel
aEditField : TtuiEditField; //Entspricht TEdit
constructor Create;
procedure execProcButton(const param:string);
end;
TmySelectBox = class
aBox : TtuiBox;
aSelectBox : TtuiSelectBox; //Entspricht ListBox
constructor Create;
procedure execProcSeleectBoxClick(const param:string);
procedure execProcSeleectBoxDBClick(const param:string);
end;
TmyScrollBars = class
aBox : TtuiBox; //Entspricht einem Fenster
aButton : TtuiButton;
aTextField : TtuiTextField;
aScrollBarHorizontal : TtuiScrollBarHorizontal;
aScrollBarVertical : TtuiScrollBarVertical;
aProgressBar : TtuiProgressBar;
constructor Create;
procedure execProcScrollBarHorizontal(const param:string);
procedure execProcScrollBarVertical(const param:string);
procedure execProcSelectableImage(const param:string);
end;
TmyMenu = class
aMenuHorizontal : TtuiMenuHorizontal;
aMenuVertical : TtuiMenuVertical;
aButton : TtuiButton;
aTextField : TtuiTextField;
aCheckBox: TtuiCheckBox;
constructor Create;
procedure execProcButton_BoxAbout_ButtonOK(const param:string);
procedure execProcButton_Button(const param:string);
procedure execProcMenuItemExit(const param:string);
procedure execProcMenuFile(const param:string);
procedure execProcMenuFileUnSelect(const param:string);
procedure execProcMenuItemAbout(const param:string);
procedure execProcMenuItemReference(const param:string);
procedure execProcMenuItemCheck(const param:string);
procedure execProcMenuHelpSelect(const param:string);
procedure execProcMenuHelpUnSelect(const param:string);
procedure execProcMenuSecond(const param:string);
procedure execProcMenuFirstSelect(const param:string);
procedure execProcMenuFirstUnSelect(const param:string);
procedure execProcMenuThirdSelect(const param:string);
procedure execProcMenuThirdUnSelect(const param:string);
procedure execProcMenuFirstItem(const param:string);
procedure execProcMenuThirdItem(const param:string);
procedure dummy(const param:string);
procedure execProcMouseR(const param:string);
procedure execProcButton2(const param:string);
procedure ExecProcEditableSelectBoxField(const param:string);
end;
{
TmyLoadFileDialog = class
theDialogLoadFile:TtuiDialogLoadFile;
constructor create;
procedure execProcSuccess(const param:string);
procedure execProcCancel(const param:string);
end;
}
TmyMiddleScrollBox = class
aBox:TtuiBox;
aMiddleScrollBox2Entries:TtuiMiddleScrollBox2Entries;
aButton:TtuiButton;
aButtonUP:TtuiButtonUP; //Entspricht Pfeiltasten
aButtonDOWN:TtuiButtonDOWN;
constructor create;
procedure execProcChange(const param:string);
procedure execProcButtonDelete(const param:string);
procedure execProcButtonInsert(const param:string);
procedure execProcButtonUP(const param:string);
procedure execProcButtonDOWN(const param:string);
end;
{ TmySaveFileDialog = class
theDialogSaveFile:TtuiDialogSaveFile;
constructor create;
procedure execProcSuccess(const param:string);
procedure execProcCancel(const param:string);
end;
}
var
theTUI : TtuiTUI;
theExitBox : TmyExitBox;
theDropBox : TmyDropBox;
theEditBox : TmyEditBox;
theSelectBox : TmySelectBox;
theScrollBars : TmyScrollBars;
theMenu : TmyMenu;
theMiddleScrollBox : TmyMiddleScrollBox;
theStaticBox : TmyStaticBox;
theImage:gfxImage;
constructor TmyExitBox.Create;
begin
aBox:=TtuiBox.create(theTUI,300,300,200,100,'box2',tuiBoxStd);
theTUI.addBox(aBox);
aButton:=TtuiButton.create(aBox,'Button 2',30,55,140,32,'close',@execProcButton);
aBox.addItem(aButton);
aTextField:=TtuiTextField.create(aBox,'TextField 3',80,24,'Box 2');
aBox.addItem(aTextField);
end;
procedure TmyExitBox.execProcButton(const param:string);
begin
aBox:=theTUI.getBoxByName('box2');
theTUI.CloseBox(aBox);
end;
constructor TmyDropBox.Create;
var aCheckBox:TtuiCheckBox;
begin
aBox:=TtuiBox.create(theTUI,600,300,200,100,'box3',tuiBoxStd);
theTUI.addBox(aBox);
aCheckBox := TtuiCheckBox.create(aBox,'myCheckBox1',32,50,100,20,'Auswahl',@ExecProcCheckBox);
aBox.addItem(aCheckBox);
aDropBox:=TtuiDropBox.create(aBox,'dropBox',32,32,128,@ExecProcDropBox);
aDropBox.curChosen:=0;
aBox.addItem(aDropBox);
aDropBox.addString('String1');
aDropBox.addString('String2');
aDropBox.addString('String3');
aDropBox.addString('String4');
end;
procedure TmyDropBox.ExecProcCheckBox(const param:string);
begin
writeln('checkbox ',param);
end;
procedure TmyDropBox.ExecProcDropBox(const param:string);
begin
writeln('dropbox ',param);
end;
constructor TmyEditBox.Create;
begin
aBox:=TtuiBox.create(theTUI,100,100,200,100,'box1',tuiBoxStd);
theTUI.addBox(aBox);
aButton:=TtuiButton.create(aBox,'Button 1',30,55,140,32,'new',@execProcButton);
aBox.addItem(aButton);
aEditField:=TtuiEditField.create(aBox,'EditField 1',10,25,128,'1234567890',@execProcButton);
//aEditField.reloadText('1234567890');
aBox.addItem(aEditField);
end;
procedure TmyEditBox.execProcButton(const param:string);
var efBox:TtuiBox;
begin
aBox:=TtuiBox.create(theTUI,100,450,200,100,'box4',tuiBoxStd);
theTUI.addBox(aBox);
efBox:=theTUI.getBoxByName('box1');
aEditField:=getEditFieldByName(efBox,'EditField 1');
aTextField:=TtuiTextField.create(aBox,'TextField 5',4,24,aEditField.theText);
aBox.addItem(aTextField);
end;
constructor TmySelectBox.Create;
var i:dword;
begin
aBox:=TtuiBox.create(theTUI,860,50,200,300,'box8',tuiBoxStd);
theTUI.addBox(aBox);
aSelectBox:=TtuiSelectBox.create(aBox,'selectBox',10,10,180,193,@execProcSeleectBoxClick,@execProcSeleectBoxDBClick);
aBox.addItem(aSelectBox);
for i:=0 to 16 do begin
aSelectBox.addString('String'+numstr(i));
end;
end;
procedure TmySelectBox.execProcSeleectBoxClick(const param:string);
begin
writeln('select '+param);
end;
procedure TmySelectBox.execProcSeleectBoxDBClick(const param:string);
begin
writeln('selectDB '+param);
end;
procedure TmyScrollBars.execProcSelectableImage(const param:string);
begin
writeln('img');
end;
constructor TmyScrollBars.Create;
var aSelectableImage:TtuiSelectableImage;
begin
aBox:=TtuiBox.create(theTUI,900,370,200,300,'box7',tuiBoxStd);
theTUI.addBox(aBox);
aScrollBarHorizontal:=TtuiScrollBarHorizontal.Create(aBox,'Horizontal ScrollBar',10,10,100,100,@execProcScrollBarHorizontal);
aBox.addItem(aScrollBarHorizontal);
aScrollBarVertical:=TtuiScrollBarVertical.Create(aBox,'Vertical ScrollBar',128,32,100,124,@execProcScrollBarVertical);
aBox.addItem(aScrollBarVertical);
aTextField:=TtuiTextField.create(aBox,'TextField 5',64,64,':)');
aBox.addItem(aTextField);
aTextField:=TtuiTextField.create(aBox,'TextField 6',64,80,':)');
aBox.addItem(aTextField);
aProgressBar:=TtuiProgressBar.create(aBox,'ProgressBar',10,150,150,24);
aBox.addItem(aProgressBar);
aBox:=TtuiBox.create(theTUI,350,70,200,200,'box88',tuiBoxStd);
theTUI.addBox(aBox);
aScrollBarHorizontal:=TtuiScrollBarHorizontal.Create(aBox,'Horizontal ScrollBar333',10,10,100,200,@execProcScrollBarHorizontal);
aBox.addItem(aScrollBarHorizontal);
aScrollBarVertical:=TtuiScrollBarVertical.Create(aBox,'Vertical ScrollBar 2',128,32,100,124,@execProcScrollBarVertical);
aBox.addItem(aScrollBarVertical);
allocImage(theImage,100,100);
aSelectableImage:= TtuiSelectableImage.create(aBox,'mySelectableImage',20,50,theimage,@execProcSelectableImage);
aBox.addItem(aSelectableImage);
end;
procedure TmyScrollBars.execProcScrollBarHorizontal(const param:string);
begin
aBox:=theTUI.getBoxByName('box7');
aScrollBarHorizontal:=getScrollBarHorizontalByName(aBox,'Horizontal ScrollBar');
aBox:=theTUI.getBoxByName('box7');
aTextField:=getTextFieldByName(aBox,'TextField 5');
aTextField.caption:='X='+numstr(aScrollBarHorizontal.curValue);
aProgressBar:=getProgressBarByName(aBox,'ProgressBar');
aProgressBar.percentage:=aScrollBarHorizontal.curValue;
end;
procedure TmyScrollBars.execProcScrollBarVertical(const param:string);
begin
aBox:=theTUI.getBoxByName('box7');
aScrollBarVertical:=getScrollBarVerticalByName(aBox,'Vertical ScrollBar');
aTextField:=getTextFieldByName(aBox,'TextField 6');
aTextField.caption:='Y='+numstr(aScrollBarVertical.curValue);
end;
procedure TmyMenu.ExecProcEditableSelectBoxField(const param:string);
begin
writeln('selected ',param);
end;
constructor TmyMenu.Create;
var aBox : TtuiBox;
aDropBox:TtuiDropBox;
aSelectBox : TtuiSelectBox;
// aMiddleScrollBox:TtuiMiddleScrollBox;
i:dword;
aEditField : TtuiEditField;
// aEditableSelectBox:TtuiEditableSelectBox;
begin
aBox:=TtuiBox.create(theTUI,0,0,vscreen.width,18,'box Horizontal Menu',tuiBoxStatic);
theTUI.addBox(aBox);
aMenuHorizontal:=TtuiMenuHorizontal.Create(aBox,'Main Menu');
aMenuHorizontal.addMenuHorizontalItem('Menu File','File',@execProcMenuFile,@execProcMenuFileUnSelect);
aMenuHorizontal.addMenuHorizontalItem('Menu Help','Help',@execProcMenuHelpSelect,@execProcMenuHelpUnSelect);
aMenuHorizontal.addMenuHorizontalItem('Menu Second','Second',@execProcMenuSecond,@dummy);
aBox.addItem(aMenuHorizontal);
aBox:=TtuiBox.create(theTUI,400,420,300,300,'box5 Horizontal Menu',tuiBoxStd);
theTUI.addBox(aBox);
aMenuHorizontal:=TtuiMenuHorizontal.Create(aBox,'5 Main Menu');
aMenuHorizontal.addMenuHorizontalItem('5 Menu First','First',@execProcMenuFirstSelect,@execProcMenuFirstUnSelect);
aMenuHorizontal.addMenuHorizontalItem('5 Menu Third','Third',@execProcMenuThirdSelect,@execProcMenuThirdUnSelect);
aBox.addItem(aMenuHorizontal);
{
aEditableSelectBox:=TtuiEditableSelectBox.Create(aBox,'editableselectbox',10,130,120,100,@ExecProcEditableSelectBoxField);
aBox.addItem(aEditableSelectBox);
for i:=0 to 16 do begin
aEditableSelectBox.addString('String'+numstr(i));
end;
aEditableSelectBox.exec;
}
{
aEditField:=TtuiEditField.create(aBox,'EditField 5',10,100,128,'1234567890',@execProcButton2);
aEditField.RightButtonExecProc:=@execProcMouseR;
//aEditField.reloadText('1234567890');
aBox.addItem(aEditField);
}
// aButton:=TtuiButton.create(aBox,'Button 7',10,20,140,32,'test',@execProcButton_Button);
// aBox.addItem(aButton);
{
aDropBox:=TtuiDropBox.create(aBox,'dropBox',10,20,128,@theDropBox.ExecProcDropBox);
aDropBox.curChosen:=0;
aBox.addItem(aDropBox);
aDropBox.addString('String1');
aDropBox.addString('String2');
aDropBox.addString('String3');
aDropBox.addString('String4');
}
{
aSelectBox:=TtuiSelectBox.create(aBox,'selectBox',10,20,180,193,@theSelectBox.execProcSeleectBoxClick,@theSelectBox.execProcSeleectBoxDBClick);
aBox.addItem(aSelectBox);
for i:=0 to 16 do begin
aSelectBox.addString('String'+numstr(i));
end;
}
{
aMiddleScrollBox:=TtuiMiddleScrollBox.Create(aBox,'MiddleScrollBox2',10,25,100,86,@theMiddleScrollBox.execProcChange);
aBox.addItem(aMiddleScrollBox);
aMiddleScrollBox.addString('1');
aMiddleScrollBox.addString('2');
aMiddleScrollBox.addString('3');
aMiddleScrollBox.addString('4');
aMiddleScrollBox.addString('5');
aMiddleScrollBox.addString('6');
}
// aCheckBox := TtuiCheckBox.create(aBox,'myCheckBox1',10,20,100,20,'Check123');
// aBox.addItem(aCheckBox);
end;
procedure TmyMenu.execProcButton_Button(const param:string);
begin
writeln(param);
end;
procedure TmyMenu.execProcMenuFirstSelect(const param:string);
var aItem : TtuiMenuHorizontalItem;
aBox : TtuiBox;
begin
aBox:=theTUI.getBoxByName('box5 Horizontal Menu');
aMenuHorizontal:=getMenuHorizontalByName(aBox,'5 Main Menu');
aItem:=aMenuHorizontal.getItemByName('5 Menu First');
aBox:=TtuiBox.create(theTUI,aBox.BoxX+aItem.x+1,aBox.BoxY+18,0,0,'box Vertical Menu First',tuiBoxStatic);
theTUI.addBox(aBox);
aMenuVertical:=TtuiMenuVertical.create(aBox,'Vertical Menu First');
aMenuVertical.addMenuVerticalItem('Vertical Menu First - First','First Item',@execProcMenuFirstItem);
aBox.addItem(aMenuVertical);
end;
procedure TmyMenu.execProcMenuFirstUnSelect(const param:string);
var
aBox : TtuiBox;
begin
aBox:=theTUI.getBoxByName('box Vertical Menu First');
theTUI.CloseBox(aBox);
end;
procedure TmyMenu.execProcMenuFirstItem(const param:string);
var
aBox : TtuiBox;
begin
aBox:=theTUI.getBoxByName('box Vertical Menu First');
theTUI.CloseBox(aBox);
writeln('First Item');
end;
procedure TmyMenu.execProcMenuThirdSelect(const param:string);
var aItem : TtuiMenuHorizontalItem;
aBox : TtuiBox;
begin
aBox:=theTUI.getBoxByName('box5 Horizontal Menu');
aMenuHorizontal:=getMenuHorizontalByName(aBox,'5 Main Menu');
aItem:=aMenuHorizontal.getItemByName('5 Menu Third');
aBox:=TtuiBox.create(theTUI,aBox.boxX+aItem.x+1,aBox.boxY+18,0,0,'box Vertical Menu Third',tuiBoxStatic);
theTUI.addBox(aBox);
aMenuVertical:=TtuiMenuVertical.create(aBox,'Vertical Menu Third');
aMenuVertical.addMenuVerticalItem('Vertical Menu First - Third','Third Item',@execProcMenuThirdItem);
aBox.addItem(aMenuVertical);
end;
procedure TmyMenu.execProcMenuThirdUnSelect(const param:string);
var
aBox : TtuiBox;
begin
aBox:=theTUI.getBoxByName('box Vertical Menu Third');
theTUI.CloseBox(aBox);
end;
procedure TmyMenu.execProcMenuThirdItem(const param:string);
var
aBox : TtuiBox;
begin
aBox:=theTUI.getBoxByName('box Vertical Menu Third');
theTUI.CloseBox(aBox);
writeln('Third Item');
end;
procedure TmyMenu.execProcButton2(const param:string);
begin
end;
procedure TmyMenu.execProcMouseR(const param:string);
var aItem : TtuiMenuHorizontalItem;
aBox : TtuiBox;
aEditField : TtuiEditField;
begin
writeln('aaa');
aBox:=theTUI.getBoxByName('box5 Horizontal Menu');
aBox:=TtuiBox.create(theTUI,mouseX,mouseY,0,0,'box Vertical Menu Third mouseR',tuiBoxStatic);
theTUI.addBox(aBox);
aMenuVertical:=TtuiMenuVertical.create(aBox,'Vertical Menu Third mouserR');
aMenuVertical.addMenuVerticalItem('Vertical Menu First - Third mouseR','intem1',@execProcMenuThirdItem);
aMenuVertical.theme.drawBorder:=true;
aBox.addItem(aMenuVertical);
end;
procedure TmyMenu.execProcMenuFile(const param:string);
var aItem : TtuiMenuHorizontalItem;
aBox : TtuiBox;
begin
aBox:=theTUI.getBoxByName('box Horizontal Menu');
aMenuHorizontal:=getMenuHorizontalByName(aBox,'Main Menu');
aItem:=aMenuHorizontal.getItemByName('Menu File');
aBox:=TtuiBox.create(theTUI,aItem.x,18,0,0,'box Vertical Menu File',tuiBoxStatic);
theTUI.addBox(aBox);
aMenuVertical:=TtuiMenuVertical.create(aBox,'Vertical Menu File');
aMenuVertical.addMenuVerticalItem('Vertical Menu Help - Exit','Exit',@execProcMenuItemExit);
aBox.addItem(aMenuVertical);
end;
procedure TmyMenu.execProcMenuFileUnSelect(const param:string);
var
aBox : TtuiBox;
begin
aBox:=theTUI.getBoxByName('box Vertical Menu File');
theTUI.CloseBox(aBox);
end;
procedure TmyMenu.execProcMenuHelpSelect(const param:string);
var aBox : TtuiBox;
aItem : TtuiMenuHorizontalItem;
begin
aBox:=theTUI.getBoxByName('box Horizontal Menu');
aMenuHorizontal:=getMenuHorizontalByName(aBox,'Main Menu');
aItem:=aMenuHorizontal.getItemByName('Menu Help');
aBox:=TtuiBox.create(theTUI,aItem.x,18,0,0,'box Vertical Menu Help',tuiBoxStatic);
theTUI.addBox(aBox);
aMenuVertical:=TtuiMenuVertical.create(aBox,'Vertical Menu Help');
aMenuVertical.addMenuVerticalItem('Vertical Menu Help - About','About',@execProcMenuItemAbout);
aMenuVertical.addMenuVerticalItem('Vertical Menu Help - Reference','Reference',@execProcMenuItemReference);
aMenuVertical.addMenuVerticalItem('Vertical Menu Help - Check','Check',@execProcMenuItemCheck);
aMenuVertical.addMenuVerticalItem('Vertical Menu Help - Check2','Check2',@execProcMenuItemCheck);
aBox.addItem(aMenuVertical);
end;
procedure TmyMenu.execProcMenuHelpUnSelect(const param:string);
var aBox : TtuiBox;
begin
aBox:=theTUI.getBoxByName('box Vertical Menu Help');
theTUI.CloseBox(aBox);
end;
procedure TmyMenu.execProcMenuSecond(const param:string);
begin
writeln('Second');
end;
procedure TmyMenu.dummy(const param:string);
begin
end;
procedure TmyMenu.execProcMenuItemExit(const param:string);
begin
gfxDone:=true;
end;
procedure TmyMenu.execProcMenuItemAbout(const param:string);
var aBox : TtuiBox;
begin
aBox:=theTUI.getBoxByName('box Vertical Menu Help');
theTUI.CloseBox(aBox);
aBox:=TtuiBox.create(theTUI,100,450,200,100,'box about',tuiBoxStd);
theTUI.addBox(aBox);
aTextField:=TtuiTextField.create(aBox,'TextField About - TUI',84,24,'TUI');
aBox.addItem(aTextField);
aButton:=TtuiButton.create(aBox,'Button OK',30,55,140,32,'OK',@execProcButton_BoxAbout_ButtonOK);
aBox.addItem(aButton);
end;
procedure TmyMenu.execProcButton_BoxAbout_ButtonOK(const param:string);
begin
end;
procedure TmyMenu.execProcMenuItemReference(const param:string);
begin
writeln('execProcMenuItemReference');
end;
procedure TmyMenu.execProcMenuItemCheck(const param:string);
begin
writeln('execProcMenuItemCheck');
end;
{
constructor TmyLoadFileDialog.create;
begin
theDialogLoadFile:=TtuiDialogLoadFile.Create(theDialogLoadFile,theTUI);
theDialogLoadFile.addExtentionHint('Programs');
theDialogLoadFile.addExtention('.pas');
theDialogLoadFile.addExtention('.exe');
theDialogLoadFile.addExtentionHint('All Files');
theDialogLoadFile.addExtention('.*');
theDialogLoadFile.execute(@execProcSuccess,@execProcCancel);
end;
procedure TmyLoadFileDialog.execProcSuccess(const param:string);
begin
writeln('LOAD ',param);
self.free;
end;
procedure TmyLoadFileDialog.execProcCancel(const param:string);
begin
writeln('CANCEL ',param);
self.free;
end;
}
constructor TmyMiddleScrollBox.Create;
var i:dword;
begin
aBox:=TtuiBox.create(theTUI,64,450,200,200,'MiddleScrollBox Box',tuiBoxStd);
theTUI.addBox(aBox);
aMiddleScrollBox2Entries:=TtuiMiddleScrollBox2Entries.Create(aBox,'MiddleScrollBox',10,10,77,3*26+2,@execProcChange);
aBox.addItem(aMiddleScrollBox2Entries);
aButtonUP:=TtuiButtonUP.Create(aBox,'ButtonUP',128,64,@execProcButtonUP);
aBox.addItem(aButtonUP);
aButtonDOWN:=TtuiButtonDOWN.Create(aBox,'ButtonUP',128,82,@execProcButtonDOWN);
aBox.addItem(aButtonDOWN);
// aMiddleScrollBox.addString('1');
{
aMiddleScrollBox.addString('2');
aMiddleScrollBox.addString('3');
aMiddleScrollBox.addString('4');
aMiddleScrollBox.addString('5');
aMiddleScrollBox.addString('6');
}
for i:=1 to 200 do aMiddleScrollBox2Entries.addString(aMiddleScrollBox2Entries.String2Entries(numstr(i),numstr(i)));
aButton:=TtuiButton.create(aBox,'Button del',30,100,140,32,'del',@execProcButtonDelete);
aBox.addItem(aButton);
aButton:=TtuiButton.create(aBox,'Button insert',30,132,140,32,'insert',@execProcButtonInsert);
aBox.addItem(aButton);
end;
procedure TmyMiddleScrollBox.execProcChange(const param:string);
begin
writeln(param);
end;
procedure TmyMiddleScrollBox.execProcButtonUP(const param:string);
begin
writeln('UP');
end;
procedure TmyMiddleScrollBox.execProcButtonDOWN(const param:string);
begin
writeln('DOWN');
end;
procedure TmyMiddleScrollBox.execProcButtonDelete(const param:string);
begin
if aMiddleScrollBox2Entries.curStringNum < 0 then exit;
aMiddleScrollBox2Entries.deleteString(aMiddleScrollBox2Entries.curStringNum);
end;
procedure TmyMiddleScrollBox.execProcButtonInsert(const param:string);
begin
aMiddleScrollBox2Entries.insertString(aMiddleScrollBox2Entries.curStringNum,aMiddleScrollBox2Entries.String2Entries('*','#'));
end;
constructor TmyStaticBox.Create;
begin
aBox:=TtuiBox.create(theTUI,256,64,64,64,'Static Box',tuiBoxStatic);
theTUI.addBox(aBox);
end;
{
constructor TmySaveFileDialog.create;
begin
theDialogSaveFile:=TtuiDialogSaveFile.Create(theTUI);
theDialogSaveFile.chosenFile:='test.it';
theDialogSaveFile.addExtentionHint('Programs');
theDialogSaveFile.addExtention('.pas');
theDialogSaveFile.addExtention('.exe');
theDialogSaveFile.addExtentionHint('All Files');
theDialogSaveFile.addExtention('.*');
theDialogSaveFile.execute(@execProcSuccess,@execProcCancel);
end;
procedure TmySaveFileDialog.execProcSuccess(const param:string);
begin
writeln('SAVE ',param);
self.free;
end;
procedure TmySaveFileDialog.execProcCancel(const param:string);
begin
writeln('CANCEL ',param);
self.free;
end;
}
var
theDialogMessageBox:TtuiDialogMessageBox;
// theDialogLoadFile:TmyLoadFileDialog;
// theDialogSaveFile:TmySaveFileDialog;
filepath : string;
type
TDrawThread = class(TThread)
protected
procedure Execute; override;
public
Constructor Create(CreateSuspended: boolean);
destructor Destroy; override;
end;
constructor TDrawThread.Create(CreateSuspended: boolean);
begin
inherited Create(CreateSuspended);
FreeOnTerminate:= True;
end;
destructor TDrawThread.Destroy;
begin
releaseContext;
inherited;
end;
procedure TDrawThread.Execute;
begin
while (not Terminated) do begin
fastfill(vscreen.data,vscreen.width*vscreen.height,$ff000000);
theTUI.draw;
ttfPrintStringXY(vscreen,theTUI.MainFont, 1280 - 128, 0, $ffffffff, floatstr(gfxFPS) + ' FPS');
FlipScreen;
end;
end;
var
drawThread : TDrawThread;
begin
filepath:=ExtractFilePath(ParamStr(0));
initTTF;
gfxDeviceMode:= gfxDeviceOpenGL;
initgfxsystem(1280,720,false,true);
theTUI:=TtuiTUI.create(vscreen,filepath+'corbel.ttf');
theExitBox:=TmyExitBox.Create;
theDropBox:=TmyDropBox.Create;
theEditBox:=TmyEditBox.Create;
theSelectBox:=TmySelectBox.Create;
theScrollBars:=TmyScrollBars.Create;
theMenu:=TmyMenu.Create;
theMiddleScrollBox:=TmyMiddleScrollBox.Create;
//theStaticBox:=TmyStaticBox.Create;
// theDialogMessageBox:=TtuiDialogMessageBox.Create(theTUI,'hallo');
// theDialogLoadFile:=TmyLoadFileDialog.Create;
// theDialogSaveFile:=TmySaveFileDialog.Create;
drawThread:= TDrawThread.Create(false);
drawThread.Start;
repeat
// fastfill(vscreen.data,vscreen.width*vscreen.height,$ff000000);
//fastfill(theImage.data,theimage.width*theImage.height,random($ffffffff));
// theTUI.draw;
theTUI.update;
updateInternals;
// FlipScreen;
until gfxDone or keyboard[KEY_ESCAPE];
// theDialogLoadFile.Free;
// theDialogMessageBox.Free;
//theDialogSaveFile.Free;
drawThread.Terminate;
drawThread.waitfor;
theExitBox.Free;
theDropBox.Free;
theEditBox.Free;
theSelectBox.Free; //alles frei geben
theScrollBars.Free;
theMenu.Free;
theMiddleScrollBox.Free;
//theStaticBox.Free;
closeTTF; //TrueTypeFont engine frei geben
finishGFXsystem; //vipGFX System frei geben
theTUI.Free; //tycoonuserinterface frei geben
ReturnFPSstring; //Zurück zu Freepascal
end.