Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-06-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Como estaba harto de que este componente me diese problemas con el tema de la negrita, lo he vuelto a modificar y aquí lo dejo ya corregido

Código Delphi [-]
{ ****************************************************************** }
{                                                                    }
{   VCL component TDBIBCheckbox                                      }
{                                                                    }
{   Dbcheckbox para Firebird permitiendo Cambiae El Value según Check }
{                                                                    }
{   Code generated by Component Create for Delphi                    }
{                                                                    }
{   Generated from untitled component definition                     }
{   on 23 March 2012 at 15:59                                        }
{                                                                    }
{   Copyright © 2012 by J.L.G.T.                                     }
{                                                                    }
{ ****************************************************************** }

unit TDbIbchkbox;

interface

uses WinTypes, WinProcs, Messages, SysUtils, Classes, Controls,
     Forms, Graphics, Stdctrls, DbTables, DB, DBCtrls, TypInfo, Dialogs;

type
  TDBIBCheckbox = class(TCheckBox)
    private
      { Private fields of TDBIBCheckbox }
        FUpperCaseChk : Boolean;
        FBoldCheck: Boolean;
        FValueChecked : String;
        FValueUnChecked : String;
        { Pointer to application's OnChange handler, if any }
        FOnChange : TNotifyEvent;
        FDataLink : TFieldDataLink;
        FBoldfixed: Boolean;
        { Private methods of TDBIBCheckbox }
        { Method to set variable and property values and create objects }
        procedure AutoInitialize;
        { Method to free any objects created by AutoInitialize }
        procedure AutoDestroy;
        function GetDataField : String;
        procedure SetDataField(Value : String);
        function GetDataSource : TDataSource;
        procedure SetDataSource(Value : TDataSource);
        procedure SetUppercaseChk(value:Boolean);
        function GetUpperCaseChk : Boolean;
        procedure SetValueChecked(value:string);
        procedure SetValueUnChecked(value:string);
        procedure ActiveChange(Sender : TObject);
        procedure DataChange(Sender : TObject);
        procedure EditingChange(Sender : TObject);
        procedure UpdateData(Sender : TObject);
        procedure SetBoldCheck(Value:Boolean);
        procedure SetBoldfixed(Value:Boolean);      //Permite que sea fija o no la negrita
    protected
      { Protected fields of TDBIBCheckbox }

      { Protected methods of TDBIBCheckbox }
        { Method to generate OnChange event }
        procedure Change(Sender : TObject); virtual;
        procedure Click; override;
        procedure KeyPress(var Key : Char); override;
        procedure Loaded; override;

    public
      { Public fields and properties of TDBIBCheckbox }
      { Public methods of TDBIBCheckbox }
        constructor Create(AOwner: TComponent); override;
        destructor Destroy; override;

    published
      { Published properties of TDBIBCheckbox }
        { Cuando Cambia el Checked }
        property OnChange : TNotifyEvent read FOnChange write FOnChange;
        property OnClick;
        property OnDblClick;
        property OnDragDrop;
        property OnEnter;
        property OnExit;
        property OnKeyDown;
        property OnKeyPress;
        property OnKeyUp;
        property OnMouseDown;
        property OnMouseMove;
        property OnMouseUp;
        { Campo de la base de datos }
        property DataField : String           read GetDataField       write SetDataField;
        { Datasource unido a la base de datos }
        property DataSource : TDataSource     read GetDataSource       write SetDataSource;
        { Asegura que Se grave en mayusculas }
        property UpperCaseChk : Boolean       read GetUpperCaseChk    write SetUppercaseChk  default True;
        { Valor de cuando Esta Checked=true }
        property ValueChecked : String        read FValueChecked      write SetValueChecked;
        { Valor de cuando no esta Checked (Checked=False) }
        property ValueUnChecked : String      read FValueUnChecked    write SetValueUnChecked;
        property BoldCheck:Boolean            read FBoldCheck         write SetBoldCheck  default True;
        property Boldfixed:Boolean            read FBoldfixed         write SetBoldfixed  default True;

        Procedure DBICHKNOT;
  end;

procedure Register;

implementation


Function GetTipoCampo (DataSet :TDataSet; Index :Integer) :String;
Begin
    Result := GetEnumName (TypeInfo (TFieldType),
    Integer (DataSet.Fields [Index].DataType));
End;

procedure Register;
begin
     RegisterComponents('InterBase', [TDBIBCheckbox]);
end;

{ Method to set variable and property values and create objects }
procedure TDBIBCheckbox.AutoInitialize;
begin
     FDataLink := TFieldDataLink.Create;
     FBoldCheck:=True;
     FUpperCaseChk:=True;
     FBoldfixed:=True;
     with FDataLink do
     begin
          { Assign handlers }
          OnDataChange := DataChange;
          OnUpdateData := UpdateData;
          OnEditingChange := EditingChange;
          OnActiveChange := ActiveChange;
     end;
end; { of AutoInitialize }

{ Method to free any objects created by AutoInitialize }
procedure TDBIBCheckbox.AutoDestroy;
begin
     FDataLink.Free;
end; { of AutoDestroy }

function TDBIBCheckbox.GetDataField : String;
begin { Return the FDataLink.FieldName property }
     Result := FDataLink.FieldName;
end;

procedure TDBIBCheckbox.SetDataField(Value : String);
begin { Set the FDataLink.FieldName property }
     FDataLink.FieldName := Value;
end;

function TDBIBCheckbox.GetDataSource : TDataSource;
begin { Return the FDataLink.DataSource property }
     Result := FDataLink.DataSource;
end;

procedure TDBIBCheckbox.SetDataSource(Value : TDataSource);
begin { Set the FDataLink.DataSource property }
     FDataLink.DataSource := Value;
end;

function TDBIBCheckbox.GetUpperCasechk : Boolean;
begin
  Result := FUpperCaseChk;
end;

{ Method to generate OnChange event }
procedure TDBIBCheckbox.Change(Sender : TObject);
begin
     if Assigned(FOnChange) then FOnChange(Sender);
end;

{ Override OnClick handler from TCheckBox }
procedure TDBIBCheckbox.Click;
begin { Call method of parent class }
     if FDataLink.Editing then  //Comprueba si se esta editando el registro
     begin
          FDataLink.Modified;
          if fDataLink.field <> nil then
          begin
             if (Checked) then
             begin
               if FUpperCaseChk then fDataLink.field.Value := UPperCase(FValueChecked)
                                else fDataLink.field.Value := FValueChecked;
               if (FBoldCheck) then
               begin
                 if (fBoldfixed=False)  then Self.Font.Style:=[fsBold]
                                        else Self.Font.Style:=[];
               end;
             end else
             begin
              if FUpperCaseChk=False then fDataLink.field.Value := UpperCase(FValueChecked)
                                     else  fDataLink.field.Value := FValueUnChecked;
             end;
          end;
          inherited Click;
//       end;
     end;
end;

{ Override OnKeyPress handler from TCheckBox }
procedure TDBIBCheckbox.KeyPress(var Key : Char);
begin { Call method of parent class }
     inherited KeyPress(Key);
end;

constructor TDBIBCheckbox.Create(AOwner: TComponent);
begin
     inherited Create(AOwner);
     AutoInitialize;
     FUpperCaseChk:=True;
     FValueChecked:='SI';
     FValueUnChecked:='NO';
     { Code to perform other tasks when the component is created }
end;

procedure TDBIBCheckbox.DataChange(Sender : TObject);
begin
    if fDataLink.field <> nil then
    begin
       if FUpperCaseChk then
       begin
          if UpperCase(FDataLink.Field.AsString)=UpperCase(FValueChecked) then Checked:=true
                                                                          else Checked:=False;
       end else
       begin
          if FDataLink.Field.Value=FValueChecked then Checked:=true
                                                 else Checked:=False;
       end;
       if (Checked) then
       begin
               if (FBoldCheck) then
               begin
                 if (fBoldfixed=False)  then Self.Font.Style:=[fsBold]
                                        else Self.Font.Style:=[];
               end;
       end;
       if Assigned(FOnChange) then FOnChange(Sender);
    end;
end;

destructor TDBIBCheckbox.Destroy;
begin
     AutoDestroy;
     inherited Destroy;
end;

procedure TDBIBCheckbox.EditingChange(Sender : TObject);
begin
     //
end;

procedure TDBIBCheckbox.Loaded;
begin
     inherited Loaded;
end;

procedure TDBIBCheckbox.ActiveChange(Sender : TObject);
const
     IntFieldTypes = [ftSmallInt, ftInteger, ftWord];
begin
     if DataField = '' then  Exit;
end;

procedure TDBIBCheckbox.UpdateData(Sender : TObject);
begin
    if fDataLink.field <> nil then
    begin
        if (Checked) then
       begin
         if FUpperCaseChk then fDataLink.field.Value := UPperCase(FValueChecked)
                          else fDataLink.field.Value := FValueChecked;
         if (FBoldCheck) then
         begin
              if (fBoldfixed=False)  then Self.Font.Style:=[fsBold]
                                     else Self.Font.Style:=[];
         end;
       end else
       begin
         if FUpperCaseChk=False then fDataLink.field.Value := UpperCase(FValueChecked)
                                  else  fDataLink.field.Value := FValueUnChecked;
       end;
    end;
end;

procedure TDBIBCheckbox.SetUppercaseChk(value: Boolean);
begin
    if value<>FUpperCaseChk then FUpperCaseChk:=value;
end;

procedure TDBIBCheckbox.SetValueChecked(value: string);
begin
      if value<>FValueChecked then
      begin
         if FDataLink.Field<>nil then
         begin
             if Length(value)>FDataLink.Field.Size then ShowMessage('El ValueCheck [ '+Value+' ] contiene más caracteres de los '+#13+#10+
                                                                    'permitidos, que es de  [ '+IntToStr(FDataLink.Field.Size)+' ] caracteres')
                                                  else FValueChecked:=value;
         end else FValueChecked:=value;
      end;
end;
procedure TDBIBCheckbox.SetBoldCheck(Value: Boolean);
begin
    if FBoldCheck<>value then FBoldCheck:=Value;

end;

procedure TDBIBCheckbox.SetBoldfixed(Value: Boolean);
begin
   if FBoldfixed<>Value then FBoldfixed:=Value;
   if FBoldfixed then Self.Font.Style:=[fsBold] else Self.Font.Style:=[]
end;

procedure TDBIBCheckbox.SetValueUnChecked(value: string);
begin
      if value<>FValueUnChecked then
      begin
         if FDataLink.Field<>nil then
         begin
             if Length(value)>FDataLink.Field.Size then ShowMessage('El ValueUnCheck [ '+Value+' ] contiene más caracteres de los '+#13+#10+
                                                                    'permitidos, que es de  [ '+IntToStr(FDataLink.Field.Size)+' ] caracteres')
                                                  else FValueUnChecked:=value;
         end else FValueUnChecked:=value;
      end;
end;

Procedure TDBIBCheckbox.DBICHKNOT;
begin
   if  FDataLink.Editing=true then
   begin
        FDataLink.Field.Value:=FValueUnChecked;
   end;
end;

end.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #2  
Antiguo 23-06-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
El Módulo de Lotes



Es importante darse cuenta que el nuevo número de lote siempre lo cogemos de configuración evitando de esta manera que se puedan duplicar los número de lotes

Tenemos que poner un apartado en el programa para cerrar el año, ya que este nos permite poner el contador de lotes y de otros si es necesario a 0

El código en https://gist.github.com/anonymous/5844768

Veamos un detalle de como va cambiando el módulo UbusquedaFP

Código Delphi [-]
procedure TFbusquedaFP.FormActivate(Sender: TObject);
//------------------------------------------------------------------------------
//********************[ Cargamos los Campos de la tabla  en el ComboBox  ]******
//------------------------------------------------------------------------------
begin
  //Comprobamos si el combo esta vacio cargamos los datos
  if Edbusqueda.Text='' then ActQuery(IBQBusqueda,'Select * From '+VarSTabla);
  if IBQBusqueda.IsEmpty then
  begin
     ShowMessage('No hay datos para buscar o mostrar');
     SB_SalirClick(Sender);
  end else
  begin
     if comboCampos.Items.Count=0 then DataSource1.DataSet.GetFieldNames(comboCampos.items);
     if VarSTabla='FPAGOS' then
     begin
       CarGarGrid(0,'ID',50,'ID');
       CarGarGrid(1,'CODIGO',130,'Código');
       CarGarGrid(2,'FORMAPAGO',260,'Forma de pago');
       CarGarGrid(3,'DIASPRESENTACION',130,'Días de presentación');
       CarGarGrid(4,'DIASCOBRO',130,'Días de cobro');
       CarGarGrid(5,'NUMERODEPAGOS',130,'Número de pagos');
     end;
     if VarSTabla='FABRICABLES' then
     begin
       CarGarGrid(0,'ID',50,'ID');
       CarGarGrid(1,'CODIGO',130,'Código');
       CarGarGrid(2,'PRODUCTO',520,'Producto');
     end;
     if VarSTabla='EMPLEADOS' then
     begin
       CarGarGrid(0,'ID',50,'ID');
       CarGarGrid(1,'CODIGO',130,'Código');
       CarGarGrid(2,'NOMBRE',520,'Nombre');
       CarGarGrid(3,'PUESTO',130,'Puesto de trabajo');
       CarGarGrid(4,'AGENTE ',130,'Es Agente o comercial');
     end;
  end;
end;

procedure TFbusquedaFP.FormClose(Sender: TObject; var Action: TCloseAction);
//------------------------------------------------------------------------------
//****************************************************************[ Cerrar ]****
//------------------------------------------------------------------------------
begin
   if (VarSNomMod='PROVEEDORES')  and (FProveedor.DsPrincipal.DataSet.State in [dsEdit,dsInsert]) then
   begin
       FProveedor.DBNCodigoFormaPago.Field.Value:=IBQBusqueda.FieldByName('FORMAPAGO').AsString; //Ponemos la forma de pago elegida
       FProveedor.DBNCodigoFormaPago.SetFocus;                        //Damos el foco nuevamente al campo
   end;
   if (VarSNomMod='LOTESF')  and (FLotes.DsPrincipal.DataSet.State in [dsEdit,dsInsert]) then
   begin
       FLotes.DBNCodFabricable.Field.Value:=IBQBusqueda.FieldByName('CODIGO').AsString; //Ponemos el código elegido
       FLotes.DBNCodFabricable.SetFocus;                        //Damos el foco nuevamente al campo
   end;
   if (VarSNomMod='LOTESE')  and (FLotes.DsPrincipal.DataSet.State in [dsEdit,dsInsert]) then
   begin
       FLotes.DBNCodEmpleado.Field.Value:=IBQBusqueda.FieldByName('CODIGO').AsString; //Ponemos el código elegido
       FLotes.DBNCodEmpleado.SetFocus;                        //Damos el foco nuevamente al campo
   end;
   Button3Click(Sender);
   QuerryOC(IBQBusqueda);
   comboCampos.Items.Clear;
end;

procedure TFbusquedaFP.FormShow(Sender: TObject);
//------------------------------------------------------------------------------
//****************************************************************[ OnShow ]****
// Adaptamos el título del form a la tabla que usamos
//------------------------------------------------------------------------------
begin
  if VarSTabla='FPAGOS' then Caption:='Búsquedas en Fomas de pago';  //Caption del Form
  if VarSTabla='EMPLEADOS' then Caption:='Búsquedas en Empleados';  //Caption del Form
  if VarSTabla='FABRICABLES' then Caption:='Búsquedas en Fabricables';  //Caption del Form
end;

como podemos ver usamos el mismo módulo, para diferentes llamadas, e incluso cunado las llamadas son desde el mismo módulo, pero para diferente Tablas ('LOTESF' y 'LOTESE')

El próximo módulo es el de entradas, que tiene muchas similitudes con este pero también con el de Stock, realmente es el paso intermedio entre ambos.

Que paséis un buen Domingo.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"

Última edición por José Luis Garcí fecha: 23-06-2013 a las 14:44:22.
Responder Con Cita
  #3  
Antiguo 24-06-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Bueno le toca al modulo de entradas



y el código como siempre en https://gist.github.com/anonymous/5850255

Como se puede apreciar, se va complicando la cosa , os que yo soy muy complicado como prefierán
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #4  
Antiguo 29-06-2013
elrayo76 elrayo76 is offline
Miembro
 
Registrado: ene 2004
Ubicación: En la tierra, por eso mis archivos en la tierra y no en la nuebe...
Posts: 290
Poder: 21
elrayo76 Va por buen camino
Un consejo por la experiencia de trabajar con distintos sistemas y clientes. En el diseño de los formularios no hagas demasiado grandes los botones porque eso le quita importancia las demas cosas del formulario y a los campos de ingreso de datos. Además intenta que los campos de ingreso de datos sean lo mas justo posibles con el tamaño de lo que puedne ingresar, o sea, que si en un campo pueden ingresar solamente 20 caracteres o dígitos que el campo de ingreso se ajuste a tener ese tamaño y no sobre espacio.

Otra cosas, tampoco pongas muchos colores al fondo de los formularios. Es conveniente que tengan un estilo mas similar al que tiene Windows XP/7.

Veo que todos generalmente opinan como debe ser la base de datos, pero lo que nadie dice es que intentes tener una base normalizada. Esto a largo plazo sera mas conveniente y te evitará grandes dolores de cabeza cuando el proyecto cresca.

Con respecto a los campos de la base lo que yo hago es poner 3 letra delante del nombre para identificar la tabla a la que pertenece. Con esto si algun campo como pueden ser los códigos si se necesitan hacer referencia en otra tabla es mas facil identificarlos

Ejemplo:

Tablas:
- Provincias
* prvCodigo
* prvDescripcion

- Clientes
* cliCodigo
* cliNombre
* cliDireccion
* prvCodigo <-- este hace referencia a un registro de otra tabla.
* cliNota

Por el momento creo que este es todo mi aporte.

Saludos,
El Rayo
__________________
Si tienes una función o procedimiento con diez parámetros, probablemente hayas olvidado uno
Responder Con Cita
  #5  
Antiguo 29-06-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Gracias por los concejos, te comento, que yo era de los que diseñaba, lo más estándar posible a windows, pero varios clientes me hicieron hacer cambios y me dieron sus razones, en gran parte lógicas.

En un principio los monitores eran de 11 pulgadas, ahora el estándar es de 17 en adelante, por lo que el espacio a crecido, y muchos clientes quieren que su programa, sea lo único que se muestre en pantalla, en cuanto a los botones, tengo dos motivos, el primero que tendemos a lo táctil con lo que botones pequeños, es totalmente des aconsejable y en segundo lugar "nos hacemos mayores y el pulso y la vista no son lo que eran" fue la frase de un cliente con poco más que lo que tengo yo ahora y me la dijo hace ya varios años, normalmente suelo usar botones de 75x75 o 80x80, exceptuando los de la barra lateral, ya que quedan según mi opinión más estéticos de esta manera.

En cuanto a los colores, suelo usar básicamente 2, el clbtnfance, como estándar y clskyblue, para los paneles, identificando de esta manera cuales están activos, con respecto a una base de datos, luego uso diferentes colores en un borde bastante fino en los botones, diferenciado los grupos o tipos, suelo usar un color para indicar el edit activo, clinfobk o clmoneygreen para los edit de sólo lectura, dos colores para los grids y por último varios colores en las pestañas, perola mayoría de los parámetros los seleccionas en configuración, así que el cliente puede seleccionar poner todo en el mismo color. Uno de los que no puede cambiar es las pestañas, pero usando un pagecontrol, has visto lo difícil que se le puede hacer a una persona diferenciar en que página esta.

hay que tener en cuenta que estuve durante años trabajando con todo tipo de minusválido, por lo que aprendes a valorar, la opinión de otras personas y muchas necesitan contrastes, para estar posicionados en un formulario de ordenador.

Varias veces, se me ha "acusado" de que mis componentes buscan mucho el temas de los colores o la estética, pero podemos echar la vista a tras y decirme a parte de la funcionalidad y las mejoras (que también suelo añadir a mis componentes que es lo que ha ido mejorando con Microsoft Ms-dos, windows, windows 3.1, windows NT windows, 95, windows 98, windows Xp, windows vista, windows 7 (se que me dejo algunos, pero creo que ya se hacen una idea) y como no con Apple y Linux, todos evolucionan, con mayor número de colores, escritorios de mayor tamaños y componentes cada vez más grandes, por que, por estética, petición de los clientes, Accesibilidad y evolución a lo táctil.

Mi opinión, es que nosotros debemos valorar los mismos aspectos, y debemos dejar parámetros que pueda decidir el cliente y tener en cuenta que existen personas con dificultades físicas y psicológicas y también debemos programar para ellos.

En este curso sólo pretendo, aportar mis conocimientos en el área y mi código, que estoy seguro de que muchos compañeros mejoran, ya que no me considero un gran programador, la mayor parte de mi vida e sido autodidacta y en este club me han dado muchísimo, comparado con lo que yo he aportado, al que le pueda ser útil algo que lo aproveche y el que no pues es libre de expresar su opinión.

No creas que me he tomado tu comentario como un ataque, por lo que he puesto en estas lineas, es simplemente una defensa en general, por que nos solemos creer, que nuestros programas son lo más estándar posibles o los mejores diseñados y es increíble la cantidad de parámetros que dejamos en medio que afectan normalmente a un grupo de personas inicialmente y con la edad como nos vamos inclinando hacía este grupo, Problemas de vista, de coordinación, etc.

Con losa años he ido aprendiendo de compañeros y he ido modificando y adaptando según los consejos que me han ido dando, también lo e echo durante este tutorial y Dios me permita no ser orgulloso y prepotente y me permita seguir aprendiendo y mejorando, por que los palos que nos podemos llevar son muy grandes. Os pongo un ejemplo, hace muchos años en una revista de juegos, existía un anuncio de IBM en la que constaba de dos paginas, en la primera aparecía un señor bien vestido y se decía poco más o menos que era un ingeniero de software de alto nivel con poca competencia, en la siguiente página aparecía un bebe de mese y al pie ponía, Y este es su mayor enemigo. La realidad es así de dura, el ejemplo lo tengo en mi sobrino, le saco más de 24 años y en cambio, maneja actualmente más de 10 lenguajes de programación, fluidamente, es un monstruo en programación sobre webs, para que os hagáis una idea, viene a mi casa para que le explique delphi, estamos toda la mañana y toda la tarde, hasta la noche, explicando y desarrollando una pequeñísima aplicación, formularios, tablas, Maestro detalle, llamadas, excepciones, etc, bien la última hora estuvo programando el sólo sin ejecutar la aplicación, aplicando punteros, arrays, llamadas a objetos, funciones y demás, el iba programando y corrigiendo, ejecuto y funciono todo perfecto. Es verdad que ya conocía el C, mientras el hacia eso yo me dedique a coger una de mis agendas apuntar ideas y trozos de código, cosa que le llamo la atención y me pregunto por que tenia tantas agendas viejas y libretas en mi despacho, le comente que en los años que tenia que viajar tanto no tenia portátil, por le que hacía lo que me enseñaron en su día plasmar el código por escrito para luego aplicarlo en un ordenador, su comentario fue "Jo que antiguo, mi cabeza no es capas de esperar a que yo escriba en un boli, yo necesito el ordenador", le pregunte es acaso no has tenido una idea, en un trayecto o mientras duermes sin tener el ordenador cerca, como haces para no olvidarla, es fácíl me dijo, ya me vendrá nuevamente, y si no le comente, entonces es que no era tan buena idea
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"

Última edición por José Luis Garcí fecha: 29-06-2013 a las 09:37:00.
Responder Con Cita
  #6  
Antiguo 29-06-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
No, no me he olvidado del tutorial, es que estoy ocupado preparando el material para un curso de fabricación que tengo que dar, antes de irme, pienso poner algo más del tutorial, después estaré como una semana, fuera y cuando vuelva reemprendere, pero mi actual trabajo será así, no se cuando estaré disponible.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #7  
Antiguo 29-06-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.052
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por José Luis Garcí Ver Mensaje
En este curso sólo pretendo, aportar mis conocimientos en el área y mi código... , al que le pueda ser útil algo que lo aproveche y el que no pues es libre de expresar su opinión.
Y muy buen aporte que es
Por cierto, yo también me he encontrado muchas veces con la pregunta: "¿me puedes poner las letras y los botones más grandes?, es que no los veo".

Por supuesto, como dice elrayo76 es muy importante la nomenclatura, la codificación, la notación usada, etc. pero creo que escapa al ámbito de este proyecto en particular, eso es algo que en este caso se deja para cada uno. Y además puede ser otro gran aporte a los foros, ¿quién se anima?
Responder Con Cita
  #8  
Antiguo 29-06-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Cita:
Empezado por Casimiro
Por supuesto, como dice elrayo76 es muy importante la nomenclatura, la codificación, la notación usada, etc. pero creo que escapa al ámbito de este proyecto en particular, eso es algo que en este caso se deja para cada uno. Y además puede ser otro gran aporte a los foros, ¿quién se anima?
Muy buena idea Casimiro
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
llamar un programa desde otro programa en un computador con dos monitores RONPABLO Varios 0 10-10-2011 18:20:51
Cargar tu programa desde otro programa rmendoza83 Varios 7 05-01-2009 19:51:33
Lanzar programa desde mi programa Pablo Carlos API de Windows 32 09-09-2004 13:56:26
Ejecutar un programa externo desde un programa de Delphi Roger_Fernandez Varios 3 02-09-2004 18:05:36
ISC ERROR CODE:335544344 I/O error for file "c:\gestion\gestion.gdb" eliasterrero Firebird e Interbase 2 28-06-2004 12:20:25


La franja horaria es GMT +2. Ahora son las 06:59:40.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi