tycoonuserinterface und vipgfx

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
multiplatform-coder
Beiträge: 61
Registriert: Do 20. Apr 2023, 18:25

tycoonuserinterface und vipgfx

Beitrag von multiplatform-coder »

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
Zuletzt geändert von multiplatform-coder am Do 13. Mär 2025, 20:02, insgesamt 2-mal geändert.

multiplatform-coder
Beiträge: 61
Registriert: Do 20. Apr 2023, 18:25

Re: tycoonuserinterface und vipgfx

Beitrag von multiplatform-coder »

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.

Antworten