Furmiga
04-04-2004, 03:26 AM
Well, i tried put a edit on a panel but both got hided when i start the app... if i try to repaint they pop up again and gone. I really dont know whats happening but of corse when i comment the timer event they, or just the edit, stays ok so i think the problem is the begin / end scene or something... here the on timer event.. take a look i can be doing something wrong...
procedure TForm1.PowerTimer1Render(Sender: TObject);
begin
PowerDraw1.Clear($00000000);
PowerDraw1.BeginScene();
fundo;
if situacao = 'login' then
login;
PowerFont1.TextOut('Frame Rate: ' + IntToStr(PowerTimer1.FrameRate) + ' fps' +' Contador = '+inttostr(contador)+ ' posX ' + inttostr(posx)+ ' PosY '+inttostr(posY), 4, 580, $AFAFAF);
PowerDraw1.EndScene();
PowerDraw1.Present();
end;;
I just need edits for login / pw at the login screen and a 'memo' or something for a future in game chat.
Well here the entire code...
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, PowerTypes, PowerDraw3, PowerTimers, PowerObjects, VTDbUnit,
PowerFonts, StdCtrls,PDrawEx, ExtCtrls, TranComp, VScreens;
type
TForm1 = class(TForm)
PowerDraw1: TPowerDraw;
PowerTimer1: TPowerTimer;
ImageList1: TAGFImageList;
PowerFont1: TPowerFont;
VTDb1: TVTDb;
VTDb2: TVTDb;
Timer1: TTimer;
VTDb3: TVTDb;
imagelist2: TAGFImageList;
procedure fundo;
procedure login;
procedure FormCreate(Sender: TObject);
procedure PowerDraw1DoneDevice(Sender: TObject);
procedure PowerDraw1InitDevice(Sender: TObject; var ExitCode: Integer);
procedure PowerTimer1Render(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure Timer1Timer(Sender: TObject);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormDblClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
contador, contador2, posX,posY : integer;
//texto : TStringList;
situacao : string;
retangulo : TRect;
inteiro : Boolean;
over_bot_login : Boolean;
over_bot_sair : Boolean;
implementation
uses Math, Unit2;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
res : integer;
begin
inteiro := true;
posX := 385;
posY := 235;
//texto := TStringList.Create;
contador := 0;
contador2 := 0;
Width := 800;
Height:= 600;
Res:= VTDb1.Initialize();
if (Res <> errNone) then
begin
MessageDlg('VTDb error: ' + ErrorString(Res), mtError, [mbOk], 0);
Application.Terminate();
Exit;
end;
Res:= VTDb2.Initialize();
if (Res <> errNone) then
begin
MessageDlg('VTDb error: ' + ErrorString(Res), mtError, [mbOk], 0);
Application.Terminate();
Exit;
end;
Res:= VTDb3.Initialize();
if (Res <> errNone) then
begin
MessageDlg('VTDb error: ' + ErrorString(Res), mtError, [mbOk], 0);
Application.Terminate();
Exit;
end;
Res:= PowerDraw1.Initialize();
if (Res <> errNone) then
begin
MessageDlg('PowerDraw error: ' + ErrorString(Res), mtError, [mbOk], 0);
Application.Terminate();
Exit;
end;
Res:= PowerDraw1.InitDevice();
if (Res <> errNone) then
begin
PowerDraw1.Finalize();
MessageDlg('Initialization error: ' + ErrorString(Res), mtError, [mbOk], 0);
Application.Terminate();
Exit;
end;
PowerTimer1.MayRender:= True;
situacao := 'login';
end;
procedure TForm1.PowerDraw1DoneDevice(Sender: TObject);
begin
PowerFont1.Finalize;
ImageList1.Finalize;
imagelist2.Finalize;
end;
procedure TForm1.PowerDraw1InitDevice(Sender: TObject; var ExitCode: Integer);
begin
ExitCode:= PowerFont1.LoadFromVTDb(VTDb1, 'zuric', PowerDraw1.DefTextureFormat);
if (ExitCode <> errNone) then
Exit;
ExitCode:= ImageList1.LoadFromVTDb(VTDb2);
if (ExitCode <> errNone) then
Exit;
ExitCode:= ImageList2.LoadFromVTDb(VTDb3);
if (ExitCode <> errNone) then
Exit;
end;
// ---------------------- INA_CIO DO TIMER ---------------------------
procedure TForm1.PowerTimer1Render(Sender: TObject);
begin
PowerDraw1.Clear($00000000);
PowerDraw1.BeginScene();
fundo;
if situacao = 'login' then
login;
PowerFont1.TextOut('Frame Rate: ' + IntToStr(PowerTimer1.FrameRate) + ' fps' +' Contador = '+inttostr(contador)+ ' posX ' + inttostr(posx)+ ' PosY '+inttostr(posY), 4, 580, $AFAFAF);
PowerDraw1.EndScene();
PowerDraw1.Present();
end;
// ---------------------- FINAL DO TIMER -----------------------------
procedure TForm1.FormDestroy(Sender: TObject);
begin
PowerDraw1.Finalize();
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
Res: Integer;
begin
if (Key = VK_ESCAPE) then Close();
if (Key = VK_RETURN)and(ssAlt in Shift) then
begin
PowerDraw1.DoneDevice();
PowerDraw1.Windowed:= not PowerDraw1.Windowed;
if (not PowerDraw1.Windowed) then
BorderStyle:= bsNone
else
BorderStyle:= bsSingle;
ClientWidth:= PowerDraw1.Width;
ClientHeight:= PowerDraw1.Height;
Res:= PowerDraw1.InitDevice();
if (Res <> errNone) then
begin
PowerDraw1.Finalize();
PowerTimer1.MayRender:= False;
MessageDlg('Initialization error: ' + ErrorString(Res), mtError, [mbOk], 0);
Close();
Exit;
end;
exit;
end;
if key = VK_LEFT then
posX := posX - 5;
if key = VK_RIGHT then
posX := posX + 5;
if key = VK_UP then
posY := posY - 5;
if key = VK_DOWN then
posY := posY + 5;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
contador := (contador + 1) mod 15;
end;
procedure TForm1.Login;
var
fundo : TRect;
begin
if inteiro then
begin
fundo.Top := janela_login_X+10;
fundo.Bottom:= janela_login_X + 90;
fundo.Left := janela_login_Y;
fundo.Right := janela_login_Y + 250;
PowerDraw1.FillRect(fundo,cColor4($00699600,$00699 600,$00699600,$00699600),effectMultiply);
PowerDraw1.FillRect(janela_login_Y+60,janela_login _X+15,160,20,$808080,effectSrcColor);
PowerDraw1.FillRect(janela_login_Y+60,janela_login _X+40,160,20,$808080,effectSrcColor);
PowerFont1.TextOut('Login:', janela_login_Y+10, janela_login_X+15, $AFAFAF);
PowerFont1.TextOut('Pass:' , janela_login_Y+10, janela_login_X+40, $AFAFAF);
if over_bot_login then
PowerDraw1.TextureMap(ImageList1.Images[5], pBounds4(janela_login_Y+60,janela_login_X+65,50,15 ),cColor1($FFFFFFFF),tPattern(1),effectSrcAlpha )
else
PowerDraw1.TextureMap(ImageList1.Images[5], pBounds4(janela_login_Y+60,janela_login_X+65,50,15 ),cColor1($FFFFFFFF),tPattern(0),effectSrcAlpha );
if over_bot_sair then
PowerDraw1.TextureMap(ImageList1.Images[6], pBounds4(janela_login_Y+170,janela_login_X+65,50,1 5),cColor1($FFFFFFFF),tPattern(1),effectSrcAlpha )
else
PowerDraw1.TextureMap(ImageList1.Images[6], pBounds4(janela_login_Y+170,janela_login_X+65,50,1 5),cColor1($FFFFFFFF),tPattern(0),effectSrcAlpha );
PowerDraw1.TextureMap(ImageList1.Images[1], pBounds4(janela_login_Y,janela_login_X,250,90),cCo lor1($FFFFFFFF),tPattern(0),effectSrcAlpha);
end
else
PowerDraw1.TextureMap(ImageList1.Images[2], pBounds4(janela_login_Y,janela_login_X,250,10),cCo lor1($FFFFFFFF),tPattern(0),effectSrcAlpha);
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
var mousepos : TPoint;
begin
GetCursorPos(mousepos);
if situacao = 'login' then
begin
if pointinrect(mousepos,bounds(janela_login_Y,janela_ login_X,ImageList1.Images[2].PatternWidth,10))then//ImageList1.Images[2].PatternHeight)) then
begin
pode_arrastar_login := true;
posicao_do_click_x := mousepos.x;
posicao_do_click_y := mousepos.y;
end;
if pointinrect(mousepos,bounds(janela_login_Y+230,jan ela_login_X,15,10))then//ImageList1.Images[2].PatternHeight)) then
inteiro := not inteiro;
if over_bot_sair then
close;
end;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
var mousepos : TPoint;
begin
Cursor := crDefault;
if situacao = 'login' then
begin
if pode_arrastar_login then
begin
if (x > 10) and (x < 790) then
begin
if posicao_do_click_x > x then
begin
janela_login_Y := janela_login_Y - (posicao_do_click_x - x);
posicao_do_click_x := x;
end;
if posicao_do_click_x < x then
begin
janela_login_Y := janela_login_Y + (x - posicao_do_click_x);
posicao_do_click_x := x;
end;
end;
if posicao_do_click_y > y then
begin
janela_login_X := janela_login_X - (posicao_do_click_y - y);
posicao_do_click_y := y;
end;
if posicao_do_click_Y < y then
begin
janela_login_X := janela_login_X + (y - posicao_do_click_y);
posicao_do_click_y := y;
end;
end;
GetCursorPos(mousepos);
if inteiro then
begin
if (pointinrect(mousepos,bounds(janela_login_Y+60,jan ela_login_X+40,160,20))) or (pointinrect(mousepos,bounds(janela_login_Y+60,jan ela_login_X+15,160,20)))then
Cursor := crIBeam
else
Cursor := crDefault;
if (pointinrect(mousepos,bounds(janela_login_Y+60,jan ela_login_X+65,50,15)))then
over_bot_login := true
else
over_bot_login := false;
if (pointinrect(mousepos,bounds(janela_login_Y+170,ja nela_login_X+65,50,15)))then
over_bot_sair := true
else
over_bot_sair := false;
end;
end;
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if situacao = 'login' then
pode_arrastar_login := false;
end;
procedure TForm1.FormDblClick(Sender: TObject);
var mousepos : TPoint;
begin
GetCursorPos(mousepos);
if situacao = 'login' then
begin
if pointinrect(mousepos,bounds(janela_login_Y,janela_ login_X,250,10))then//ImageList
inteiro := not inteiro
end;
end;
procedure TForm1.fundo;
begin
if situacao = 'login' then
begin
PowerDraw1.TextureMap(ImageList1.Images[3], pBounds4(0,0,200,200),cColor1($FFFFFFFF),tPattern( 0),effectNone);
PowerDraw1.TextureMap(ImageList1.Images[3], pBounds4(200,0,200,200),cColor1($FFFFFFFF),tPatter n(1),effectNone);
PowerDraw1.TextureMap(ImageList1.Images[3], pBounds4(400,0,200,200),cColor1($FFFFFFFF),tPatter n(2),effectNone);
PowerDraw1.TextureMap(ImageList1.Images[3], pBounds4(600,0,200,200),cColor1($FFFFFFFF),tPatter n(3),effectNone);
PowerDraw1.TextureMap(ImageList1.Images[3], pBounds4(0,200,200,200),cColor1($FFFFFFFF),tPatter n(4),effectNone);
PowerDraw1.TextureMap(ImageList1.Images[3], pBounds4(200,200,200,200),cColor1($FFFFFFFF),tPatt ern(5),effectNone);
PowerDraw1.TextureMap(ImageList1.Images[3], pBounds4(400,200,200,200),cColor1($FFFFFFFF),tPatt ern(6),effectNone);
PowerDraw1.TextureMap(ImageList1.Images[3], pBounds4(600,200,200,200),cColor1($FFFFFFFF),tPatt ern(7),effectNone);
PowerDraw1.TextureMap(ImageList1.Images[3], pBounds4(0,400,200,200),cColor1($FFFFFFFF),tPatter n(8),effectNone);
PowerDraw1.TextureMap(ImageList1.Images[3], pBounds4(200,400,200,200),cColor1($FFFFFFFF),tPatt ern(9),effectNone);
PowerDraw1.TextureMap(ImageList1.Images[3], pBounds4(400,400,200,200),cColor1($FFFFFFFF),tPatt ern(10),effectNone);
PowerDraw1.TextureMap(ImageList1.Images[3], pBounds4(600,400,200,200),cColor1($FFFFFFFF),tPatt ern(11),effectNone);
PowerDraw1.TextureMap(ImageList1.Images[4], pBounds4(150,4,250,72),cColor1($FF104000),tPattern (0),effectAdd);
PowerDraw1.TextureMap(ImageList1.Images[4], pBounds4(400,4,250,72),cColor1($FF104000),tPattern (1),effectAdd);
PowerDraw1.TextureMap(ImageList1.Images[0], pBounds4(posX,posY,69,74),cColor1($FFFFFFFF),tPatt ern(contador),effectSrcColor);
end;
end;
end.
// ------------------------- UNIT 2 ----------------------------
var
janela_login_X : integer = 80;
janela_login_Y : integer = 500;
pode_arrastar_login : Boolean;
posicao_do_click_x , posicao_do_click_y : integer;
// ------------------------ END OF UNIT 2 ------------------------
Plz guys i need this help i know u guys can help me :) ty ty ty
Furmiga
05-04-2004, 05:43 AM
Heya Harry Hunt srry to annoying u with my questions :P but can u tell me if this can be a way to solve my problem ?
I made a component "at last i had to intall it heh" and... could u plz see if after some improvements this can be useful ? I mean am I on the right way ? I never made a component before and im pretty sure i missed something. the "demo" version Is working fine but im afraid i missed important stuffs.
here ya go again...
unit editX;
interface
uses
windows, Classes, PowerTypes, PowerDraw3, PowerFonts, Controls;
type
TeditX = class(TComponent)
private
FpowerDraw : TPowerDraw;
FPowerFont : TPowerFont;
FTexto : string;
F_Top : integer;
F_Left : integer;
FFont : integer;
FTamanho : integer;
FClicado : Boolean;
contador : integer;
letras : integer;
lista : TStringList;
primeiro : Boolean;
mousepos : TPoint;
FOnMouseMove : TMouseMoveEvent;
FPassword : Boolean;
TextoSecreto : String;
protected
procedure SetPowerDraw(value : TPowerDraw);
procedure SetPowerFont(Value: TPowerFont);
procedure Set_Top(Value: integer);
procedure Set_Left(Value: integer);
procedure SetFont(Value: integer);
procedure SetTamanho (Value: Integer);
procedure SetTexto(Value: String);
procedure SetClicado(Value: Boolean);
procedure SetOnMouseEvent(Value: TMouseMoveEvent);
procedure SetPassword(Value : Boolean);
public
procedure desenha;
procedure resolve(valor : Char);
property clicado : Boolean read FClicado Write SetClicado;
function pass: String;
published
property PowerDraw: TPowerDraw read FpowerDraw write SetPowerDraw;
property PowerFont: TPowerFont read FPowerFont write SetPowerFont;
property Texto : String read FTexto write SetTexto;
Property Top_ : integer read F_Top write Set_Top;
Property left_ : integer read F_Left write Set_Left;
Property Font : integer read FFont write SetFont;
Property Tamanho : integer read FTamanho write SetTamanho;
property OnMouseMove : TMouseMoveEvent read FOnMouseMove write SetOnMouseEvent;
property Password : Boolean read FPassword write SetPassword;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('PowerGrafix', [TeditX]);
end;
{ TeditX }
procedure TeditX.desenha;
var shift : TShiftState;
begin
GetCursorPos(mousepos);
FPowerDraw.FillRect(F_Left,F_Top,FTamanho,FFont,$8 08080,effectSrcColor);
FPowerFont.TextOut(FTexto,F_Left,F_Top+3,$FFFFFFFF ,effectNone);
if pointinrect(mousepos,bounds(F_Left,F_Top,FTamanho, FFont)) then
begin
if assigned(OnMouseMove) then
OnMouseMove(Self,shift,mousepos.X,mousepos.y);
end;
if clicado then
begin
contador := (contador + 1) mod 250;
if contador > 125 then
FPowerDraw.FrameRect(F_Left+letras*9,F_Top,1,FFont ,$FF888888,effectNone)
end;
end;
procedure TeditX.resolve(valor: Char);
var I : Integer;
begin
if primeiro = false then
begin
lista := TStringList.Create;
primeiro := true;
end;
if (valor in ['A'..'Z','a'..'z', '0'..'9']) and (lista.Count < 17) then
begin
lista.Add(valor);
FTexto := '';
TextoSecreto := '';
letras := 0;
for I:= 0 to lista.Count-1 do
begin
if password then
begin
FTexto := FTexto + '*';
TextoSecreto := TextoSecreto + lista.Strings[I];
end
else
FTexto := FTexto + lista.Strings[I];
letras := letras + 1;
end;
end
else if (valor in ['A'..'Z','a'..'z', '0'..'9']) and (lista.Count >= 17) then
begin
beep(100,100);
end
else if (valor = chr(8)) and (lista.Count > 0) then
begin
letras := letras - 1;
lista.Delete(lista.Count-1);
Ftexto := copy(Ftexto,0,lista.Count);
end;
end;
procedure TeditX.SetPowerFont(Value: TPowerFont);
begin
FPowerFont := Value;
end;
procedure TeditX.SetPowerDraw(value: TPowerDraw);
begin
FpowerDraw := value;
end;
procedure TeditX.SetFont(Value: integer);
begin
FFont := value;
end;
procedure TeditX.Set_Left(Value: integer);
begin
F_Left := value;
end;
procedure TeditX.SetTamanho(Value: Integer);
begin
FTamanho := value;
end;
procedure TeditX.SetTexto(Value: String);
begin
FTexto := value;
end;
procedure TeditX.Set_Top(Value: integer);
begin
F_Top := value;
end;
procedure TeditX.SetClicado(value: Boolean);
begin
FClicado := value;
end;
procedure TeditX.SetOnMouseEvent(value: TMouseMoveEvent);
begin
FOnMouseMove:= value;
end;
procedure TeditX.SetPassword(Value: Boolean);
begin
FPassword := Value;
end;
function TeditX.pass: String;
begin
result := TextoSecreto;
end;
end.
Thx in advance
Powered by vBulletin® Version 4.2.5 Copyright © 2024 vBulletin Solutions Inc. All rights reserved.