![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
¿Como modifico un componente libre?
Bueno el componente en cuestion es ArtFormula, lo encuentran en artsoft . nm . ru / works . html sirve como evaluador de expresiones en tiempo de ejecucion, descargado de la pagina no tiene soporte para llamar datos de una tabla o base de datos, sin embargo el autor de este componente proporciona codigo para que esta funcionalidad se incluya en el componente, lo malo es que intente agregar a los archivos pas que viene con el componente y no le encuentro solucion. El codigo adicional en cuestion es este:
El autor dice que hay que crear un nuevo modulo para acceder a los datos de Firebird. Por ejem para un tsqltable seria asi. FBTables : array of TSQLTable; function mytable(var Calc : TFormulaCalc):TCalcItem; begin setN(result,trunc(Calc.topn)); end; function mytableopen(var Calc : TFormulaCalc):TCalcItem; var i,p : integer; begin p := -1; for i := 0 to high(FBTables) do begin if FBTables[i] = nil then begin p := i; break; end; end; if p = -1 then begin p := high(FBTables)+1; setlength(FBTables,p+1); end; FBTables[p] := TSQLTable.Create(Self); < ... initialization of FBTables[p] ... > setN(result,p); end; function mytableclose(var Calc : TFormulaCalc):TCalcItem; var current:integer; begin current := trunc(Calc.TopN); FBTables[current].close; Freeandnil(Files[current]); setN(result,0); end; function mytablenext(var Calc : TFormulaCalc):TCalcItem; var current:integer; begin current := trunc(Calc.TopN); FBTables[current].next; if FBTables[current].eof then setN(result,0) else setN(result,1); end; function mytablefield(var Calc : TFormulaCalc):TCalcItem; var current:integer; begin current := trunc(Calc.ItemN(1)); SetS(result,FBTables[current].fieldbyname(Calc.topS).asstring); end; module := Formula.AddUserFunction('table',1,mytable,true); Formula.AddModuleFunction(module,'open',1,mytableopen); Formula.AddModuleFunction(module,'close',0,mytableclose); Formula.AddModuleFunction(module,'next',0,mytablenext); Formula.AddModuleFunction(module,'field',1,mytablefield); Despues en el programa ya iria esto: $mytable := table.open('table_name'); $n := 1; while $n=1 do if table($mytable).field('field')="AFECTED" then B3=50 else B3=0 endd; $n := table($mytable).next; wend; table($mytable).close; Alguna idea de como deben ir y en que archivos para que la funcionalidad de sacar datos de Tsqltable o Tsqlquery se adicione con estos codigos a ese componente, desde ya gracias por vuestra respuesta. |
#2
|
||||
|
||||
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración
![]() Recuerda poner los tags al código fuente, ejemplo: ![]() Gracias ![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
¿Cómo modifico una linea de un Memo? | ErYcK | C++ Builder | 2 | 30-04-2012 18:01:05 |
Libro: Software Libre para una sociedad libre | rretamar | La Taberna | 33 | 31-05-2011 11:09:34 |
como modifico esta consulta. | guillox | SQL | 1 | 17-11-2007 17:34:53 |
Modifico tabla y la indexo | panda | Conexión con bases de datos | 8 | 11-09-2004 22:44:25 |
[Software libre] Publicada gestión comercial libre (GPL) para Kylix ... | kinobi | Noticias | 4 | 13-10-2003 15:19:36 |
![]() |
|