Página 1 de 1
Como criar novo objeto em clipper 5.3, sensível ao mouse?
Enviado: 21 Fev 2007 02:11
por linux.eo
Caros,
Criei um objeto GET, e gostaria de saber como
torná-lo sensível ao "toque" do mouse.
No Clipper 5.3, assim como no xHarbour,
os elementos GET recebem o foco com
o clique do mouse.
Que parâmetro deve ser alterado em
um novo objeto, para que ele tenha
esta interação?
Grato.
Enviado: 21 Fev 2007 13:09
por linux.eo
Entendi mais ou menos.
Eu estava "preso" dentro de um
loop que eu criei na função oGet:reader,
que justamente examinar as teclas
pressionadas pelo usuário, para
fazer com que o objeto GET perca
ou não o foco.
Fiz o loop, e aguardei os cliques
das teclas setas, espaço, enter,
tab e shift-tab.
Esqueci de "ouvir" os cliques do mouse.
Fazer "ouvir" o clique do mouse é fácil.
O difícil vai ser fazer o foco pular para
o campo clicado pelo mouse.
Encontrei o LOOP dos GETs dentro
do arquivo RTL/TGETLIST.PRG,
do source do xHarbour.
Mas lá ele é usado em Method, e Class.
Ainda não sei trabalhar com Métodos no
xHarbour, nem encontro nenhum material
de leitura.
Gostaria de criar um objeto diferente,
usando os métodos preexistentes dos GETs
como padrão, e alterando apenas alguns
detalhes dentro do método reader()
(herança?).
Alguém tem algum material de estudo,
sobre Methods em clipper 5.3 ou xharbour?
Enviado: 23 Fev 2007 09:17
por linux.eo
Neste site encontrei uma boa introdução ao xHarbour,
e um bom e simples exemplo de como se iniciar
na programação orientada a objeto através
do xHarbour:
http://en.wikipedia.org/wiki/XHarbour
Aqui está o exemplo de um OOP:
OOP samples
Código: Selecionar todos
#include "hbclass.ch"
PROCEDURE Main()
LOCAl oPerson := Person( "Dave" )
oPerson:Eyes := "Invalid"
oPerson:Eyes := "Blue"
Alert( oPerson:Describe() )
RETURN
CLASS Person
DATA Name INIT ""
METHOD New() CONSTRUCTOR
ACCESS Eyes INLINE ::pvtEyes
ASSIGN Eyes( x ) INLINE IIF( ValType( x ) == 'C' .AND. x IN "Blue,Brown,Green", ::pvtEyes := x, Alert( "Invalid value" ) )
// Sample of IN-LINE Method definition
INLINE METHOD Describe()
LOCAL cDescription
IF Empty( ::Name )
cDescription := "I have no name yet."
ELSE
cDescription := "My name is: " + ::Name + ";"
ENDIF
IF ! Empty( ::Eyes )
cDescription += "my eyes' color is: " + ::Eyes
ENDIF
ENDMETHOD
PRIVATE:
DATA pvtEyes
ENDCLASS
// Sample of normal Method definition.
METHOD New( cName ) CLASS Person
::Name := cName
RETURN Self
Enviado: 25 Fev 2007 22:01
por Stanis Luksys
Olá amigo,
A construção de classes no Clipper 5.3 é isso aí que você postou mesmo...
Mas no caso de ativação do mouse no get, me parece q é só dar o SET EVENTMASK no começo.
Vale lembrar que para sair do read ativo sú mudando as classes mesmo, no livro do Ramalho tem inclusive um exemplo de temporizador do READ...
Falou!
Fiz uma gambiarra e deu certo.
Enviado: 26 Fev 2007 06:54
por linux.eo
Examinei alguns exemplos de objetos,
e consegui fazer o mouse rodar em meus
novos objetos.
Primeiro tinha conseguido fazer o mouse
sair do objeto e pular para outro externo,
o trabalho maior foi fazer o mouse
entrar no objeto, ao clicar em sua área.
Fiz um objeto botão, com 3 opções diferentes
de desenho (1- tipo com bordas ascii em relevo,
2- tipo visual lib, 3- tipo botão do Edit do DOS),
todos com imagem de sem foco, com foco, e pressionado.
Ele pode ser pressionado com espaço, enter
ou clique do mouse.
E pode ser criado no meio de qualquer
elemento @ SAY GET normal.
É que o botão do visual lib, pelo menos,
até onde vi, não era criado junto
com outros GETs. Posso estar enganado.
Pelo que entendi no Visual Lib, depois
de você sair de um read, é que você
entrava em outro read apenas de
botões.
Além disso, fiz frames, desktop,
windows, entre outras coisas, também
com opção de desenho usando as
bordas ASCII, ou as bordas da fonte
do Visual Lib.
Consegui reproduzir as fontes do
Visual Lib no Linux, em janela xterm,
e em console puro (tela cheia).
Vou tentar agora fazer com que a
fonte do Visual Lib rode no Putty.
E depois vou tentar fazer com que
as funções que desenham janelas,
botões e frames, detectem que estão
rodando sobre gtwvw, para automaticamente
criarem janelas e botões "for windows".
Isso tudo é um desafio e plano de estudo,
para me incentivar a estudar mais.