Clipper On Line • Ver Tópico - TBROWSE - pesquisa letra a letra

TBROWSE - pesquisa letra a letra

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

TBROWSE - pesquisa letra a letra

Mensagempor mmarcondes » 25 Jul 2022 11:47

Estou testando o TBROWSE da minigui, estou achando muito legal, realmente parecido com o que tinha no clipper.
pelos exemplos que tem na pasta samples\advanced, dá pra entender muita coisa como funciona, eu só não consegui achar exemplo de como fazer pesquisa letra a letra, aquela que a gente vai digitando e vai aparecendo o resultado.
eu uso DBF.
obrigado por qualquer ajuda.
mmarcondes
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 63
Data de registro: 02 Jul 2021 15:06
Cidade/Estado: witmarsum
Curtiu: 20 vezes
Mens.Curtidas: 2 vezes

TBROWSE - pesquisa letra a letra

Mensagempor carlaoonline » 11 Ago 2022 09:11

Bom dia!

Na pasta instalada pelo pacote de instalação da MiniGui Extend já tem prontinho exatamente o que pediu:

C:\MiniGUI\SAMPLES\Advanced\Tsb_filter

Claro que para grandes bancos de dados/matrizes o código terá que ser revisto...
talvez não seja viável a busca por caracteres no meio do campo, somente no início...

Segue Demo.prg

/*
* MINIGUI - Harbour Win32 GUI library Demo
*
* Author: Igor Nazarov
*
* Revised by Grigory Filatov and Sergej Kiselev
*/

#include "minigui.ch"
#include "tsbrowse.ch"

STATIC aFont := {}

MEMVAR oBrw_1

FUNCTION Main()
   LOCAL cDbf := 'Test_1.dbf'

   REQUEST DBFCDX

   SET CENTURY ON
   SET DELETED ON

   DEFINE FONT Font_1  FONTNAME "Times New Roman" SIZE 11
   DEFINE FONT Font_2  FONTNAME "Times New Roman" SIZE 10
   DEFINE FONT Font_3  FONTNAME "Times New Roman" SIZE 9 BOLD

   AAdd( aFont, GetFontHandle( "Font_1" ) )
   AAdd( aFont, GetFontHandle( "Font_2" ) )
   AAdd( aFont, GetFontHandle( "Font_3" ) )

   DEFINE WINDOW Form_0 ;
          WIDTH 620 ;
          HEIGHT 400 ;
          TITLE 'TsBrowse sample: Incremental search' ;
          ICON 'lupa.ico' ;
          MAIN ;
          NOMAXIMIZE ;
          NOSIZE

      DEFINE LABEL Message
         ROW        7
         COL       10
         WIDTH     80
         HEIGHT    16
         VALUE  'Search for :'
         FONTBOLD .T.
      END LABEL

      DEFINE TEXTBOX Text_1
         ROW       5
         COL      90
         WIDTH   345
         HEIGHT   21
         ON CHANGE {|| RefreshBrowse()}
      END TEXTBOX

      ON KEY ESCAPE ACTION ThisWindow.Release

    END WINDOW

    DEFINE WINDOW Form_1 ;
         WIDTH  600 ;
         HEIGHT  40 ;
         CHILD      ;
         NOSYSMENU  ;
         NOCAPTION

      DEFINE LABEL Label_1
         ROW     iif( IsVista().or.IsSeven(), 5, 10 )
         COL     10
         WIDTH  580
         HEIGHT  24
         VALUE   ''
         CENTERALIGN .T.
      END LABEL

    END WINDOW

   ScanSoft( cDbf )

   USE (cDbf) ALIAS (cFileNoExt( cDbf )) SHARED READONLY NEW

   CreateBrowse( "oBrw_1", 'Form_0', 30, 2, Form_0.Width-10, Form_0.Height-60, Alias() )

   Form_0.Text_1.Setfocus

   CENTER WINDOW Form_0
   ACTIVATE WINDOW ALL

RETURN Nil

FUNCTION CreateBrowse( cBrw, cParent, nRow, nCol, nWidth, nHeight, cAlias )

   PUBLIC &cBrw

   DEFINE TBROWSE &cBrw ;
          AT nRow, nCol ;
          ALIAS cAlias ;
          OF &cParent ;
          WIDTH  nWidth ;
          HEIGHT nHeight ;
          COLORS { CLR_BLACK, CLR_WHITE } ;
          FONT "MS Sans Serif" ;
          SIZE 8

      :SetAppendMode( .F. )
      :SetDeleteMode( .F. )

      ADD COLUMN TO &cBrw DATA "" TITLE "" SIZE 16

      LoadFields( cBrw, cParent )

      :aColumns[2]:cHeading := "Date of" + CRLF + "installation"
      :aColumns[2]:nAlign   := DT_CENTER

      :aColumns[3]:cHeading := "Application Name"
      :aColumns[3]:nAlign   := DT_LEFT

      :aColumns[4]:cHeading := "Version"
      :aColumns[4]:nAlign   := DT_RIGHT

      :lCellBrw    := .F.
      :lNoHScroll  := .T.
      :lNoMoveCols := .T.

      :hBmpCursor  := LoadImage( "pointer.bmp" )

      :nClrLine    := COLOR_GRID

      :SetColor( { 16 },  {        RGB(  43, 149, 168 )})                             //  SyperHeader backcolor
      :SetColor( {  3 },  {        RGB( 255, 255, 255 )})                             //  Header font color
      :SetColor( {  4 },  { { || { RGB(  43, 149, 168 ), RGB(   0,  54,  94 )}}})     //  Header backcolor
      :SetColor( { 17 },  {        RGB( 255, 255, 255 )})                             //  Font color in SyperHeader
      :SetColor( {  6 },  { { || { RGB( 255, 255,  74 ), RGB( 240, 240,   0 )}}})     //  Cursor backcolor
      :SetColor( { 12 },  { { || { RGB( 128, 128, 128 ), RGB( 250, 250, 250 )}}})     //  Inactive cursor backcolor
      :SetColor( {  2 },  { { ||   RGB( 230, 240, 255 )}})                            //  Grid backcolor
      :SetColor( {  1 },  { { ||   RGB(   0,   0,   0 )}})                            //  Text color in grid
      :SetColor( {  5 },  { { ||   RGB(   0,   0, 255 )}})                            //  Text color of cursor in grid
      :SetColor( { 11 },  { { ||   RGB(   0,   0,   0 )}})                            //  Text color of inactive cursor in grid

      :nHeightCell += 6
      :nHeightHead += 6
      :nWheelLines := 1

      :ChangeFont( aFont[ 1 ],   , 1 )
      :ChangeFont( aFont[ 3 ], 2 , 1 )
      :ChangeFont( aFont[ 3 ],   , 2 )

      :AdjColumns()

      :ResetVScroll( .T. )
      :SetNoHoles()

   END TBROWSE

RETURN Nil

STATIC FUNCTION RefreshBrowse()
   LOCAL cSeek := Alltrim( Form_0.Text_1.Value )

   IF ! Empty(cSeek)
      oBrw_1:FilterFTS( cSeek, .T. )
   ELSE
      oBrw_1:FilterFTS( Nil )
   ENDIF

RETURN Nil

STATIC FUNCTION ScanSoft(cDbf)
LOCAL oWmi, oItem
LOCAL cSW_Name, dSW_InstallDate, cSW_Version
LOCAL aStr := {}, cAlias

IF ! File( cDbf )
    AAdd( aStr, { 'F1', 'D',  8, 0 } )
    AAdd( aStr, { 'F2', 'C', 60, 0 } )
    AAdd( aStr, { 'F3', 'C', 20, 0 } )

    DbCreate( cDbf, aStr )

    cAlias := cFileNoExt( cDbf )
    USE (cDbf) ALIAS (cAlias) NEW

    Form_1.Label_1.Value := 'Reading the list of installed programs... Wait, please!'
    Form_1.Center
    Form_1.Show

    oWmi := WmiService()

    FOR EACH oItem IN oWmi:ExecQuery( "SELECT * FROM Win32_Product" )
        dSW_InstallDate := iif( ISSTRING( oItem:InstallDate ), STOD( Left( oItem:InstallDate, 8 ) ), Date() )
        cSW_Name := oItem:Caption
        cSW_Version := oItem:Version

        (cAlias)->( DbAppend() )
        (cAlias)->F1 := dSW_InstallDate
        If HB_ISCHAR( cSW_Name )
           (cAlias)->F2 := cSW_Name
        EndIf
        If HB_ISCHAR( cSW_Version )
           (cAlias)->F3 := cSW_Version
        EndIf
    NEXT

    (cAlias)->( DbCloseArea() )

    Form_1.Hide
ENDIF

RETURN Nil

FUNCTION WMIService()
   Local oLocator
   Static oWmi

   IF oWmi == NIL
         oLocator := CreateObject( "wbemScripting.SwbemLocator" )
         oWmi     := oLocator:ConnectServer()
   ENDIF

RETURN oWmi



Para baixar o pacote atualizado MiniGui Extend,

https://hmgextended.com

ir na Sessão Download->Current Version
Avatar de usuário

carlaoonline
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 190
Data de registro: 24 Ago 2014 22:38
Cidade/Estado: Porto Alegre-RS
Curtiu: 73 vezes
Mens.Curtidas: 22 vezes




Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 10 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro