Ir al contenido


Foto

Nuevas Funciones


  • Por favor identifícate para responder
2 respuestas en este tema

#1 Desart

Desart

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 715 mensajes
  • LocationEspaña

Escrito 20 noviembre 2010 - 04:37

Hola compañeros me gustaría compartir con ustedes estas nuevas funciones.
Compañeros no se porque me une todas las lineas, ya que me persiste el error de unirme todas las lineas os adjunto untxt con estas funciones

Editdo por seoane para corregir lo de las lineas


delphi
  1. //------------------------------------------------------------------------------
  2. //**********************************************************[ FIRECHECK ]*******
  3. // JLGT 19/11/2010  Se encarga de pasar de  firebird a checkbox
  4. // ---------Ejemplo------------
  5. //  FireCheck(Checkbox1,Dtasource1,'VENDIDO');
  6. //------------------------------------------------------------------------------
  7. function FireCheck(CHK:TCheckBox;          //Checkbox a Rellenar
  8.                   Ds:TDataSource;          //Dtasource para conocer  el campo
  9.                   CAMPO:string):string;    //Campo al que esta asociado y devuelve el valor SI si es checked y NO si es False
  10. begin
  11.     if Ds.DataSet.FieldByName(CAMPO).Value='SI' then
  12.     begin
  13.       CHK.Checked:=True;
  14.       Result:='SI';
  15.     end else
  16.     begin
  17.       CHK.Checked:=False;
  18.       Result:='NO';
  19.     end;
  20. end;
  21.  
  22.  
  23.  
  24.  
  25. //------------------------------------------------------------------------------
  26. //**********************************************************[ CHECKFIRE ]*******
  27. // JLGT 19/11/2010  Se encarga de pasar checkbox a si o no para firebird
  28. // ---------Ejemplo------------
  29. //  CheckFire(Checkbox1,Dtasource1,'VENDIDO');
  30. //------------------------------------------------------------------------------
  31. //Nueva JLGT 19/11/2010  Se encarga de pasar checkbox a si o no para firebird
  32. function CheckFire(CHK:TCheckBox;          //Checkbox a comprobar
  33.                   Ds:TDataSource;        //Dtasource para conocer  el campo
  34.                   CAMPO:string):string;  //Campo al que esta asociado y devuelve el valor SI si es checked y NO si es False
  35. begin
  36.     if CHK.Checked=true then
  37.     begin
  38.         Ds.DataSet.FieldByName(CAMPO).Value:='SI';
  39.         Result:='SI';
  40.     end else
  41.     begin
  42.         Ds.DataSet.FieldByName(CAMPO).Value:='NO';
  43.         Result:='NO';
  44.     end;
  45. end;
  46.  
  47.  
  48.  
  49. function MAxMin(Max,Min,Valor:integer): Integer;
  50. //-----------------------------------------------------------------------------
  51. //************************************************************[  MaxMin ]******
  52. //  2010  JLGT  Controla que un valor integer este entre un máximo y un mínimo
  53. //-----------------------------------------------------------------------------
  54. //  Ejemplo MaxMin(100,50,80);  ///Da 80
  55. //  Ejemplo MaxMin(100,50,180);  ///Da 100
  56. //  Ejemplo MaxMin(100,50,35);  ///Da 50
  57. //-----------------------------------------------------------------------------
  58. var VMiRetorrno:integer;
  59.     focusRectangle:tshape;
  60. begin
  61.  
  62.   VMiRetorrno:=VALOR;
  63.   if min>valor then VMiRetorrno:=Min;
  64.   if max<valor then  VMiRetorrno:=Max;
  65.   Result:=VMiRetorrno;
  66. end;
  67.  
  68.  
  69.  
  70. Function Redondear(Control: TWinControl;Round:integer;ColorLine,ColorFondo:Tcolor;WidthLine,Style,Border,space,STyleF:integer):boolean ;
  71. //-----------------------------------------------------------------------------
  72. //*********************************************************[ Redondear  ]******
  73. // 2010 JLGT Un efecto con borde de un color y relleno de otro sobre un control
  74. //-----------------------------------------------------------------------------
  75. // Bueno basandome en el código de master23 y en el código de about
  76. // página [url]http://delphi.about.com/od/adptips2006/qt/focusrectangle.htm[/url]
  77. // más unas modificaciones mias queda bastante cuioso
  78. //-----------------------------------------------------------------------------
  79. // Parametros-------------
  80. // Control:      Control que queremos usar
  81. // Round:        Redondeo que quermeos darle al borde
  82. // ColorLine:    Color a asignar en el fondo
  83. // ColorFondo:    Color a aplicar al borde
  84. // WidthLine:    Grosor del borde
  85. // Style:        Tipo de pluma a usar para relleno borde
  86. // Border:        Tipo de border a crear
  87. // space          Espacio a separar del control
  88. // STyleF:        Tipo de pluma a usar para relleno fondo
  89. //-----------------------------------------------------------------------------
  90. //
  91. //  Ejemplo  Redondear(Edit1,2,clGreen,clyellow,2,1,3,3,1);
  92. //
  93. //-----------------------------------------------------------------------------
  94. var
  95.   R: TRect;
  96.   Rgn: HRGN;
  97.   focusRectangle:tshape;  //unit  ExtCtrls
  98. begin
  99.   focusRectangle := TShape.Create(Control) ;
  100.   case border of
  101.     1: focusRectangle.Shape := stRectangle;
  102.     2: focusRectangle.Shape := stSquare;      //queda mal
  103.     3: focusRectangle.Shape := stRoundRect;
  104.     4: focusRectangle.Shape := stRoundSquare; //queda mal
  105.     5: focusRectangle.Shape := stEllipse;    //queda mal
  106.     6: focusRectangle.Shape := stCircle;      //queda mal
  107.   end;
  108.   focusRectangle.Visible := false;
  109.   case Style of
  110.     1: focusRectangle.Pen.Style := psSolid;
  111.     2: focusRectangle.Pen.Style := psDash;
  112.     3: focusRectangle.Pen.Style := psDot;
  113.     4: focusRectangle.Pen.Style := psDashDot;
  114.     5: focusRectangle.Pen.Style := psDashDotDot;
  115.     6: focusRectangle.Pen.Style := psClear;
  116.     7: focusRectangle.Pen.Style := psInsideFrame;
  117.     8: focusRectangle.Pen.Style := psUserStyle;
  118.     9: focusRectangle.Pen.Style := psAlternate;
  119.   end;
  120.   focusRectangle.Brush.Color:=ColorFondo;
  121.   case STyleF of
  122.     1:focusRectangle.Brush.Style := bsSolid;
  123.     2:focusRectangle.Brush.Style := bsClear;
  124.     3:focusRectangle.Brush.Style := bsHorizontal;
  125.     4:focusRectangle.Brush.Style := bsVertical;
  126.     5:focusRectangle.Brush.Style := bsFDiagonal;
  127.     6:focusRectangle.Brush.Style := bsCross;
  128.     7:focusRectangle.Brush.Style := bsDiagCross;
  129.   end;
  130.   FocusRectangle.Pen.Color := ColorLine;
  131.   focusRectangle.Pen.Width := WidthLine;
  132.   with Control do
  133.   begin
  134.     R := ClientRect;
  135.     rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, Round, Round) ;
  136.     Perform(EM_GETRECT, 0, lParam(@r)) ;
  137.     InflateRect(r, - 4, - 4) ;
  138.     Perform(EM_SETRECTNP, 0, lParam(@r)) ;
  139.     SetWindowRgn(Handle, rgn, True) ;
  140.     with focusRectangle do
  141.     begin
  142.       Parent := Control.Parent;
  143.       Top := Control.Top - (space+WidthLine);
  144.       Height := Control.Height + ((space*2)+WidthLine);
  145.       Left := Control.Left - (space+WidthLine);
  146.       Width := Control.Width + ((Space*2)+WidthLine);
  147.       Visible := true;
  148.     end;
  149.     Invalidate;
  150.   end;
  151. end;
  152.  
  153. Function ActQuery(QRY:TIBQuery; TxtSql:string): Boolean;
  154. //-----------------------------------------------------------------------------
  155. //**********************************************************[ ActQuerry ]******
  156. //  20/11/2010  JLGT  Para modificar la sentencia de un querry
  157. //-----------------------------------------------------------------------------
  158. //  Estudiando como poder hacer mi código mas corto se me ocurrio esta función
  159. //  para usar un los IBQerry, para mi base de datos Firebird.
  160. //  El tema es que cada vez que utilizo un querry y lo modifico tengo que
  161. //  escribir unas 20 lineas y mediante este sistema, logro reducirlo a una sola
  162. //  ya que es un, código repetitivo y soló varia el nombre del query y la
  163. //  sentencia Sql, cree esta función
  164. //-----------------------------------------------------------------------------
  165. //  Base de datos a usar CLIENTES
  166.  
  167. //  if ActQuerry(IBQuerry1,&#39;Select * form Clientex&#39;)=true then
  168. //                  showmessage(&#39;Existe la base de datos&#39;)
  169. //  else showmessage(&#39;No existe la base de datos&#39;);
  170. //-----------------------------------------------------------------------------
  171. var AntSql:string;
  172. begin
  173.     try
  174.       try
  175.         AntSql:=QRY.SQL.Text;
  176.         QRY.Active:=false;
  177.         QRY.SQL.Clear;
  178.         QRY.SQL.Text:=TxtSql;
  179.         QRY.Active:=true;
  180.         Result:=true;
  181.       except
  182.         on E: Exception do
  183.         begin
  184.           ShowMessage(&#39;Se ha producido un error: &#39; + Chr(13) + Chr(13)
  185.                     + &#39;Clase de error: &#39; + E.ClassName + Chr(13) + Chr(13)
  186.                     + &#39;Mensaje del error: &#39; + E.Message+ Chr(13) + Chr(13)
  187.                     +&#39;  &#39;+ Chr(13) + Chr(13)
  188.                     +&#39;Se volvera al estado anterior&#39;);
  189.         Result:=false;
  190.         end;
  191.       end;
  192.     finally
  193.       if Result=false then
  194.       begin
  195.         QRY.Active:=false;
  196.         QRY.SQL.Clear;
  197.         QRY.SQL.Text:=AntSql;
  198.         QRY.Active:=true;
  199.       end;
  200.     end;
  201. end;

Archivos adjuntos


  • 0

#2 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 mensajes
  • LocationEspaña

Escrito 20 noviembre 2010 - 07:40

Buenas,

Sólo comentar que para campos booleanos en Firebird yo uso este dominio



sql
  1. CREATE DOMAIN BOOL AS
  2. SMALLINT
  3. CHECK (VALUE IN (0,1) OR VALUE IS NULL);



Luego, en Delphi, o bien uso tdbchecbox modificando las propiedades valuechecked y valueunchecked a 1 y 0 respectivamente. Con lo que respecta a los grids, si el que uso no muestra por defecto un checkbox, lo pinto yo :)

Nos leemos

  • 0

#3 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 20 noviembre 2010 - 12:30

Cada vez que veo que algún compañero se desprende de código y lo coloca en estos espacios, me alegra el día.

Muchas gracias amigos.

Salud OS
  • 0




IP.Board spam blocked by CleanTalk.