From hfiandor en ceniai.inf.cu Sat Jul 8 23:22:32 2017 From: hfiandor en ceniai.inf.cu (hfiandor) Date: Sat, 8 Jul 2017 17:22:32 -0400 Subject: [Lazarus-es] quitar foco a un componente get off focus Message-ID: Dear colleagues Estimados listeros: I have a form with a button that get focus to make easy the action. When the action is finished, the button remain with focus, and I want that this focus (borders with dotted lines) disappear. Somebody sent to me the command to be included in the proper line of the program, but I missed, and now I need this. Please, help me. Tengo una forma con un botón que coge foco para viabilizar la operación. Cuando la acción prevista se termina, el botón muestra el foco (no lo pierde), como yo deseo. Alguien con muy buena intención me mandó el comando que lo lograba, pero yo lo perdí, y ahora lo necesito de nuevo. Por favor, tírenme alguna ayuda. Saludos Ing. Héctor F. Fiandor Rosario ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From adearmas en gmail.com Sat Jul 8 23:44:17 2017 From: adearmas en gmail.com (Adrian De Armas) Date: Sat, 8 Jul 2017 18:44:17 -0300 Subject: [Lazarus-es] quitar foco a un componente get off focus In-Reply-To: References: Message-ID: Hola Hector, Se me ocurre que podés hacer dos cosas: 1: Asignarle el foco a un control en especial (Control.SetFocus) 2: Hacer como si en botón que pulsaste pierde el foco como cuando pulsas tab. Los controles que derivan de TWinControl tienen el método PerformTab. Por ejemplo, si tengo un botón llamado button1 en la pantalla y escribo: button1.PerformTab(True); el foco pasa al siguiente control de la pantalla. Espero sea lo que necesitas. Saludos 2017-07-08 18:22 GMT-03:00 hfiandor via Lazarus-es < lazarus-es en lists.lazarus-ide.org>: > Dear colleagues Estimados listeros: > > > > I have a form with a button that get focus to make easy the action. When > the action is finished, the button remain with focus, and I want that this > focus (borders with dotted lines) disappear. > > > > Somebody sent to me the command to be included in the proper line of the > program, but I missed, and now I need this. > > > > Please, help me. > > > > Tengo una forma con un botón que coge foco para viabilizar la operación. > Cuando la acción prevista se termina, el botón muestra el foco (no lo > pierde), como yo deseo. > > > > Alguien con muy buena intención me mandó el comando que lo lograba, pero > yo lo perdí, y ahora lo necesito de nuevo. > > > > Por favor, tírenme alguna ayuda. > > > > Saludos > > Ing. Héctor F. Fiandor Rosario > > > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus-ide.org > https://lists.lazarus-ide.org/listinfo/lazarus-es > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From hfiandor en ceniai.inf.cu Sun Jul 9 10:15:50 2017 From: hfiandor en ceniai.inf.cu (hfiandor) Date: Sun, 9 Jul 2017 03:15:50 -0500 Subject: [Lazarus-es] quitar foco a un componente get off focus In-Reply-To: References: Message-ID: Estimado Adrian, nuchas gracias, voy a probar. Saludos Hfiandor ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From hfiandor en ceniai.inf.cu Tue Jul 11 12:20:19 2017 From: hfiandor en ceniai.inf.cu (hfiandor) Date: Tue, 11 Jul 2017 06:20:19 -0400 Subject: [Lazarus-es] ejecutar un CopyFile Message-ID: Estimados colegas: En una aplicación necesito copiar un fichero .db Tengo en el uses el FileUtil, el LazFileUtils y el LazUtils. Hago lo siguiente: try sour:=camino_BD+'\Clasificadores.db'; sour:=#39 + sour + #39; //para ponerle single quote dest:=camino_BD+'\Copia_Clasificadores.db'; dest:=#39 + dest + #39; mensa('sour: '+sour); mensa('dest: '+dest); copyfile(sour,dest); except On E:Exception do begin ShowMessage(E.Message); end; end; Hasta aquí, el programa no da error, aunque no copia el fichero. Consulté el WikiLeaks y trato de hacerlo como se indica. Si me pueden dar alguna ayuda, voy a aprender y agradecerlo mucho. Saludos Ing. Héctor F. Fiandor Rosario ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From perniamatos en infomed.sld.cu Tue Jul 11 15:40:36 2017 From: perniamatos en infomed.sld.cu (Maikel Enrique =?ISO-8859-1?Q?Pern=EDa?= Matos) Date: Tue, 11 Jul 2017 09:40:36 -0400 Subject: [Lazarus-es] ejecutar un CopyFile In-Reply-To: References: Message-ID: <1499780436.1531.24.camel@infomed.sld.cu> El mar, 11-07-2017 a las 06:20 -0400, hfiandor via Lazarus-es escribió: > Estimados colegas: > > > > En una aplicación necesito copiar un fichero .db > > Tengo en el uses el FileUtil, el LazFileUtils y el LazUtils. > > > > Hago lo siguiente: > > try > > sour:=camino_BD+'\Clasificadores.db'; > > sour:=#39 + sour + #39; //para ponerle single quote > > dest:=camino_BD+'\Copia_Clasificadores.db'; > > dest:=#39 + dest + #39; > > mensa('sour: '+sour); > > mensa('dest: '+dest); > > copyfile(sour,dest); > > except > > On E:Exception do > > begin > > ShowMessage(E.Message); > > end; > > end; > > > > Hasta aquí, el programa no da error, aunque no copia el fichero. > > Consulté el WikiLeaks y trato de hacerlo como se indica. > > > > Si me pueden dar alguna ayuda, voy a aprender y agradecerlo mucho. > > > > Saludos > > Ing. Héctor F. Fiandor Rosario > > > > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus-ide.org > https://lists.lazarus-ide.org/listinfo/lazarus-es Héctor: En una app que hice algún tiempo atrás necesitaba copiar ficheros, por lo que cree un TDialog que mostraba el proceso de la copia, te muestro el procedimiento de la copia, la llamada al procedimeinto isFree asigna el parametro a la variable CanClose evitando que el usuario cierre el dialogo antes de finalizada la copia. procedure TfrmProgress.CopyFileDlg(sourcePath, targetPath : string); var source, target :file of byte; Buffer :array[0..4096] of char; progress :integer; length :longint; begin frmProgress.isFree(false); AssignFile(source, sourcePath); reset(source); AssignFile(target, targetPath); rewrite(target); length:=FileSize(sourcePath); frmProgress.ProgressBar.Max:=length; frmProgress.ProgressBar.Min:=0; while length > 0 do begin BlockRead(source, Buffer[0], SizeOf(Buffer), progress); length := length - progress; BlockWrite(target, Buffer[0], progress); frmProgress.ProgressBar.Position := frmProgress.ProgressBar.Position + progress; frmProgress.Refresh; end; CloseFile(source); CloseFile(target); frmProgress.isFree(true); frmProgress.Close; end; -- Este mensaje le ha llegado mediante el servicio de correo electronico que ofrece Infomed para respaldar el cumplimiento de las misiones del Sistema Nacional de Salud. La persona que envia este correo asume el compromiso de usar el servicio a tales fines y cumplir con las regulaciones establecidas Infomed: http://www.sld.cu/ From naechev en yahoo.com.ar Tue Jul 11 15:55:24 2017 From: naechev en yahoo.com.ar (=?UTF-8?Q?Nestor_Echeverr=c3=ada?=) Date: Tue, 11 Jul 2017 10:55:24 -0300 Subject: [Lazarus-es] ejecutar un CopyFile In-Reply-To: References: Message-ID: Hola Héctor, buen día. Aquí abajo te pego una parte de código mostrando como yo copiaba un archivo (esto era una aplicación de control de llamadas en una central telefónica). Como verás, usaba FileUtil y luego la función CopyFile ( En _edit1.text_ tenía el destino de la copia y el nombre del archivo era fijo: _ctrltel.ctl_). Espero sirva de algo. Saludos. uses Classes, SysUtils,FileUtil, LResources, Forms, Controls, Graphics, Dialogs, Buttons, StdCtrls, ComCtrls, SdpoSerial; procedure TForm1.Button1Click(Sender: TObject); var a:boolean; begin SdpoSerial1.Active:=false; CloseFile(Flog); a:=CopyFile('ctrltel.ctl',Edit1.text); if a then showmessage('Exportado satisfactoriamente') else showmessage ('Error en la exportación'); SdpoSerial1.Active:=true; Append( Flog ) end; El 11/07/2017 a las 7:20, hfiandor via Lazarus-es escribió: > > Estimados colegas: > > En una aplicación necesito copiar un fichero .db > > Tengo en el uses el FileUtil, el LazFileUtils y el LazUtils. > > Hago lo siguiente: > > try > > sour:=camino_BD+'\Clasificadores.db'; > > sour:=#39 + sour + #39; //para ponerle single quote > > dest:=camino_BD+'\Copia_Clasificadores.db'; > > dest:=#39 + dest + #39; > > mensa('sour: '+sour); > > mensa('dest: '+dest); > > copyfile(sour,dest); > > except > > On E:Exception do > > begin > > ShowMessage(E.Message); > > end; > > end; > > Hasta aquí, el programa no da error, aunque no copia el fichero. > > Consulté el WikiLeaks y trato de hacerlo como se indica. > > Si me pueden dar alguna ayuda, voy a aprender y agradecerlo mucho. > > Saludos > > Ing. Héctor F. Fiandor Rosario > > > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus-ide.org > https://lists.lazarus-ide.org/listinfo/lazarus-es ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From mmgomez en gmail.com Tue Jul 11 17:03:09 2017 From: mmgomez en gmail.com (Martin Gomez) Date: Tue, 11 Jul 2017 12:03:09 -0300 Subject: [Lazarus-es] ejecutar un CopyFile In-Reply-To: References: Message-ID: Héctor, La función CopyFile no hace raise de error, sólo devuelve un booleano indicando si la copia funcionó. http://wiki.lazarus.freepascal.org/CopyFile por otro lado, creo que los #39 son innecesarios (puedo estar equivocado) 2017-07-11 7:20 GMT-03:00 hfiandor via Lazarus-es < lazarus-es en lists.lazarus-ide.org>: > Estimados colegas: > > > > En una aplicación necesito copiar un fichero .db > > Tengo en el uses el FileUtil, el LazFileUtils y el LazUtils. > > > > Hago lo siguiente: > > try > > sour:=camino_BD+'\Clasificadores.db'; > > sour:=#39 + sour + #39; //para ponerle single quote > > dest:=camino_BD+'\Copia_Clasificadores.db'; > > dest:=#39 + dest + #39; > > mensa('sour: '+sour); > > mensa('dest: '+dest); > > copyfile(sour,dest); > > except > > On E:Exception do > > begin > > ShowMessage(E.Message); > > end; > > end; > > > > Hasta aquí, el programa no da error, aunque no copia el fichero. > > Consulté el WikiLeaks y trato de hacerlo como se indica. > > > > Si me pueden dar alguna ayuda, voy a aprender y agradecerlo mucho. > > > > Saludos > > Ing. Héctor F. Fiandor Rosario > > > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus-ide.org > https://lists.lazarus-ide.org/listinfo/lazarus-es > > -- ​ Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program. ​ ​ *Linus Torvalds* ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From slibre en natio.co.cu Tue Jul 11 21:41:47 2017 From: slibre en natio.co.cu (Ismael L. Donis Garcia) Date: Tue, 11 Jul 2017 15:41:47 -0400 Subject: [Lazarus-es] No cambiar de columna en dbgrid Message-ID: Como se podrá impedir que el curso abance una columna al dar enter en un dbgrid en el evento EditingDone? Tengo lo siguiente: dbg: TDBGrid; Y quiero en el evento: procedure Tfvsal.dbgEditingDone(Sender: TObject); begin if (dbg.SelectedIndex = 4) then begin if (dbg.DataSource.DataSet.FieldByName('cantidad').AsFloat > dbg.DataSource.DataSet.FieldByName('exist').AsFloat) then begin //.......... //que al entrar aqui me salga de la columna 4 //.......... Application.MessageBox('La cantidad a dar salida no puede ser mayor a la existencia.' , pchar(Self.Caption), MB_ICONINFORMATION); dbg.DataSource.DataSet.FieldByName('cantidad').AsFloat := 0; dbg.DataSource.DataSet.FieldByName('saldo2').AsFloat:=0; dbg.DataSource.DataSet.FieldByName('saldo1').AsFloat:=0; end else begin try dbg.DataSource.DataSet.FieldByName('saldo2').AsFloat:=StrToFloat(FormatCurr('#0.00', dbg.DataSource.DataSet.FieldByName('cantidad').AsFloat * dbg.DataSource.DataSet.FieldByName('pre2').AsFloat)); except dbg.DataSource.DataSet.FieldByName('saldo2').AsFloat:=0; end; try dbg.DataSource.DataSet.FieldByName('saldo1').AsFloat:=StrToFloat(FormatCurr('#0.00', dbg.DataSource.DataSet.FieldByName('cantidad').AsFloat * dbg.DataSource.DataSet.FieldByName('pre1').AsFloat)); except dbg.DataSource.DataSet.FieldByName('saldo1').AsFloat:=0; end; end; end; end; Saludos Cordiales -- Ismael Devuan User : http://distrowatch.com/table.php?distribution=devuan ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From slibre en natio.co.cu Tue Jul 11 21:41:47 2017 From: slibre en natio.co.cu (Ismael L. Donis Garcia) Date: Tue, 11 Jul 2017 15:41:47 -0400 Subject: [Lazarus-es] No cambiar de columna en dbgrid Message-ID: Como se podrá impedir que el curso abance una columna al dar enter en un dbgrid en el evento EditingDone? Tengo lo siguiente: dbg: TDBGrid; Y quiero en el evento: procedure Tfvsal.dbgEditingDone(Sender: TObject); begin if (dbg.SelectedIndex = 4) then begin if (dbg.DataSource.DataSet.FieldByName('cantidad').AsFloat > dbg.DataSource.DataSet.FieldByName('exist').AsFloat) then begin //.......... //que al entrar aqui me salga de la columna 4 //.......... Application.MessageBox('La cantidad a dar salida no puede ser mayor a la existencia.' , pchar(Self.Caption), MB_ICONINFORMATION); dbg.DataSource.DataSet.FieldByName('cantidad').AsFloat := 0; dbg.DataSource.DataSet.FieldByName('saldo2').AsFloat:=0; dbg.DataSource.DataSet.FieldByName('saldo1').AsFloat:=0; end else begin try dbg.DataSource.DataSet.FieldByName('saldo2').AsFloat:=StrToFloat(FormatCurr('#0.00', dbg.DataSource.DataSet.FieldByName('cantidad').AsFloat * dbg.DataSource.DataSet.FieldByName('pre2').AsFloat)); except dbg.DataSource.DataSet.FieldByName('saldo2').AsFloat:=0; end; try dbg.DataSource.DataSet.FieldByName('saldo1').AsFloat:=StrToFloat(FormatCurr('#0.00', dbg.DataSource.DataSet.FieldByName('cantidad').AsFloat * dbg.DataSource.DataSet.FieldByName('pre1').AsFloat)); except dbg.DataSource.DataSet.FieldByName('saldo1').AsFloat:=0; end; end; end; end; Saludos Cordiales -- Ismael Devuan User : http://distrowatch.com/table.php?distribution=devuan ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From slibre en natio.co.cu Tue Jul 11 21:45:27 2017 From: slibre en natio.co.cu (Ismael L. Donis Garcia) Date: Tue, 11 Jul 2017 15:45:27 -0400 Subject: [Lazarus-es] No cambiar de columna en dbgrid Message-ID: <3C9622C3A2154AFC9B366E35230D473D@natio.co.cu> Quise decir que no me salga de la columna 4, ósea si la cantidad es mayor a la existencia que me de un mensaje y se me quede en dicha columna. Saludos Reiterados -- Ismael Devuan User : http://distrowatch.com/table.php?distribution=devuan ----- Original Message ----- From: Ismael L. Donis Garcia To: Spanish version of Lazarus List ; Spanish Lazarus Sent: Tuesday, July 11, 2017 3:41 PM Subject: No cambiar de columna en dbgrid Como se podrá impedir que el curso abance una columna al dar enter en un dbgrid en el evento EditingDone? Tengo lo siguiente: dbg: TDBGrid; Y quiero en el evento: procedure Tfvsal.dbgEditingDone(Sender: TObject); begin if (dbg.SelectedIndex = 4) then begin if (dbg.DataSource.DataSet.FieldByName('cantidad').AsFloat > dbg.DataSource.DataSet.FieldByName('exist').AsFloat) then begin //.......... //que al entrar aqui me salga de la columna 4 //.......... Application.MessageBox('La cantidad a dar salida no puede ser mayor a la existencia.' , pchar(Self.Caption), MB_ICONINFORMATION); dbg.DataSource.DataSet.FieldByName('cantidad').AsFloat := 0; dbg.DataSource.DataSet.FieldByName('saldo2').AsFloat:=0; dbg.DataSource.DataSet.FieldByName('saldo1').AsFloat:=0; end else begin try dbg.DataSource.DataSet.FieldByName('saldo2').AsFloat:=StrToFloat(FormatCurr('#0.00', dbg.DataSource.DataSet.FieldByName('cantidad').AsFloat * dbg.DataSource.DataSet.FieldByName('pre2').AsFloat)); except dbg.DataSource.DataSet.FieldByName('saldo2').AsFloat:=0; end; try dbg.DataSource.DataSet.FieldByName('saldo1').AsFloat:=StrToFloat(FormatCurr('#0.00', dbg.DataSource.DataSet.FieldByName('cantidad').AsFloat * dbg.DataSource.DataSet.FieldByName('pre1').AsFloat)); except dbg.DataSource.DataSet.FieldByName('saldo1').AsFloat:=0; end; end; end; end; Saludos Cordiales -- Ismael Devuan User : http://distrowatch.com/table.php?distribution=devuan ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From slibre en natio.co.cu Tue Jul 11 21:45:27 2017 From: slibre en natio.co.cu (Ismael L. Donis Garcia) Date: Tue, 11 Jul 2017 15:45:27 -0400 Subject: [Lazarus-es] No cambiar de columna en dbgrid Message-ID: <3C9622C3A2154AFC9B366E35230D473D@natio.co.cu> Quise decir que no me salga de la columna 4, ósea si la cantidad es mayor a la existencia que me de un mensaje y se me quede en dicha columna. Saludos Reiterados -- Ismael Devuan User : http://distrowatch.com/table.php?distribution=devuan ----- Original Message ----- From: Ismael L. Donis Garcia To: Spanish version of Lazarus List ; Spanish Lazarus Sent: Tuesday, July 11, 2017 3:41 PM Subject: No cambiar de columna en dbgrid Como se podrá impedir que el curso abance una columna al dar enter en un dbgrid en el evento EditingDone? Tengo lo siguiente: dbg: TDBGrid; Y quiero en el evento: procedure Tfvsal.dbgEditingDone(Sender: TObject); begin if (dbg.SelectedIndex = 4) then begin if (dbg.DataSource.DataSet.FieldByName('cantidad').AsFloat > dbg.DataSource.DataSet.FieldByName('exist').AsFloat) then begin //.......... //que al entrar aqui me salga de la columna 4 //.......... Application.MessageBox('La cantidad a dar salida no puede ser mayor a la existencia.' , pchar(Self.Caption), MB_ICONINFORMATION); dbg.DataSource.DataSet.FieldByName('cantidad').AsFloat := 0; dbg.DataSource.DataSet.FieldByName('saldo2').AsFloat:=0; dbg.DataSource.DataSet.FieldByName('saldo1').AsFloat:=0; end else begin try dbg.DataSource.DataSet.FieldByName('saldo2').AsFloat:=StrToFloat(FormatCurr('#0.00', dbg.DataSource.DataSet.FieldByName('cantidad').AsFloat * dbg.DataSource.DataSet.FieldByName('pre2').AsFloat)); except dbg.DataSource.DataSet.FieldByName('saldo2').AsFloat:=0; end; try dbg.DataSource.DataSet.FieldByName('saldo1').AsFloat:=StrToFloat(FormatCurr('#0.00', dbg.DataSource.DataSet.FieldByName('cantidad').AsFloat * dbg.DataSource.DataSet.FieldByName('pre1').AsFloat)); except dbg.DataSource.DataSet.FieldByName('saldo1').AsFloat:=0; end; end; end; end; Saludos Cordiales -- Ismael Devuan User : http://distrowatch.com/table.php?distribution=devuan ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From jesusrmx en gmail.com Thu Jul 13 16:49:39 2017 From: jesusrmx en gmail.com (Jesus R.) Date: Thu, 13 Jul 2017 09:49:39 -0500 Subject: [Lazarus-es] No cambiar de columna en dbgrid In-Reply-To: <3C9622C3A2154AFC9B366E35230D473D@natio.co.cu> References: <3C9622C3A2154AFC9B366E35230D473D@natio.co.cu> Message-ID: Hola Ismael, seguramente habrán un par de cosas que podrías hacer para lograr lo que quieres de una forma mas directa, pero me parece apropiado hacerte una sugerencia para esos casos como en que aquí nos ocupa. En este punto te encuentras procesando un evento OnEditingDone, sin un análisis muy detallado es difícil saber que ocurrió antes y que ocurrirá después, solo sabemos que en algún punto el grid seleccionará el campo siguiente. Entonces estamos en la situación en la que se desea alterar el comportamiento pero no sabemos en medio de cuantas capas de procesamiento estamos. En estos casos sería muy útil simplemente dejar que las cosas sucedan y al primer momento disponible tomar acción. Para ello hay dos formas, algunos usan Timers pero en realidad no soy fan de esa técnica y por eso te sugiero una segunda alternativa. Lazarus cuenta con un método de postergar una acción de tal manera que se efectué cuando haya terminado de hacer lo que sea que esté haciendo, ya sea una interacción con el usuario mediante el ratón o el teclado, o alguna otra cosa. Para ello lo que se tiene que hacer es usar el procedimiento Application.QueueAsyncCall, ésta toma dos parámetros: un método y un dato cuyo valor puede ser a nuestra conveniencia o 0. El método es el procedimiento que la aplicación llamará justo cuando no tenga otra cosa mas que hacer. Se usa de la siguiente forma: // agregar RegresarAColumnaCantidad en la declaración de Tfvsal .... procedure RegresarAColumnaCantidad(Data: PtrInt); .... // poner en la fila de espera de métodos a procesar .... .... Application.MessageBox('La cantidad a dar salida no puede ser mayor a la existencia.' , pchar(Self.Caption), MB_ICONINFORMATION); Application.QueueAsyncCall(@RegresarAColumnaCantidad, 0); .... // luego o antes como quieras, la implementación de RegresarColumnaACantidad procedute Tfvsal.RegresarAColumnaCantidad(Data: PtrInt); begin dbg.SelectedIndex := NUMERODECOLUMNA; end; y eso teóricamente :), debería funcionar. Como un tip extra, si colocas el cursor el algún punto de la palabra @RegresarAColumnaCantidad y presionas SHIFT+CTRL+C, Lazarus no solo declarará el método por ti, sino también introducirá una implementación vacía lista para tu línea "dbg.SelectedIndex := NUMERODECOLUMNA;" Saludos. Jesus Reyes A. From slibre en natio.co.cu Fri Jul 14 14:47:44 2017 From: slibre en natio.co.cu (Ismael L. Donis Garcia) Date: Fri, 14 Jul 2017 08:47:44 -0400 Subject: [Lazarus-es] No cambiar de columna en dbgrid References: <3C9622C3A2154AFC9B366E35230D473D@natio.co.cu> Message-ID: <824B7E52A4074518981FD88113E92946@natio.co.cu> La verdad Jesús que yo no me explico de donde tu sacas las soluciones. Funciona Perfectamente. Que decirte..... Saludos Cordiales -- Ismael Devuan User : http://distrowatch.com/table.php?distribution=devuan ----- Original Message ----- From: "Jesus R. via Lazarus-es" To: "Spanish version of Lazarus List" Cc: "Jesus R." Sent: Thursday, July 13, 2017 10:49 AM Subject: Re: [Lazarus-es] No cambiar de columna en dbgrid > Hola Ismael, seguramente habrán un par de cosas que podrías hacer para > lograr lo que quieres de una forma mas directa, pero me parece > apropiado hacerte una sugerencia para esos casos como en que aquí nos > ocupa. En este punto te encuentras procesando un evento OnEditingDone, > sin un análisis muy detallado es difícil saber que ocurrió antes y que > ocurrirá después, solo sabemos que en algún punto el grid seleccionará > el campo siguiente. Entonces estamos en la situación en la que se > desea alterar el comportamiento pero no sabemos en medio de cuantas > capas de procesamiento estamos. En estos casos sería muy útil > simplemente dejar que las cosas sucedan y al primer momento disponible > tomar acción. Para ello hay dos formas, algunos usan Timers pero en > realidad no soy fan de esa técnica y por eso te sugiero una segunda > alternativa. Lazarus cuenta con un método de postergar una acción de > tal manera que se efectué cuando haya terminado de hacer lo que sea > que esté haciendo, ya sea una interacción con el usuario mediante el > ratón o el teclado, o alguna otra cosa. Para ello lo que se tiene que > hacer es usar el procedimiento Application.QueueAsyncCall, ésta toma > dos parámetros: un método y un dato cuyo valor puede ser a nuestra > conveniencia o 0. El método es el procedimiento que la aplicación > llamará justo cuando no tenga otra cosa mas que hacer. Se usa de la > siguiente forma: > > // agregar RegresarAColumnaCantidad en la declaración de Tfvsal > .... > procedure RegresarAColumnaCantidad(Data: PtrInt); > .... > > // poner en la fila de espera de métodos a procesar .... > .... > Application.MessageBox('La cantidad a dar salida no puede ser mayor a > la existencia.' , pchar(Self.Caption), MB_ICONINFORMATION); > Application.QueueAsyncCall(@RegresarAColumnaCantidad, 0); > .... > > // luego o antes como quieras, la implementación de > RegresarColumnaACantidad > procedute Tfvsal.RegresarAColumnaCantidad(Data: PtrInt); > begin > dbg.SelectedIndex := NUMERODECOLUMNA; > end; > > y eso teóricamente :), debería funcionar. > > Como un tip extra, si colocas el cursor el algún punto de la palabra > @RegresarAColumnaCantidad y presionas SHIFT+CTRL+C, Lazarus no solo > declarará el método por ti, sino también introducirá una > implementación vacía lista para tu línea "dbg.SelectedIndex := > NUMERODECOLUMNA;" > > Saludos. > > Jesus Reyes A. > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus-ide.org > https://lists.lazarus-ide.org/listinfo/lazarus-es > From felix.listadebian en gmail.com Fri Jul 14 19:49:32 2017 From: felix.listadebian en gmail.com (Felix Perez) Date: Fri, 14 Jul 2017 13:49:32 -0400 Subject: [Lazarus-es] No cambiar de columna en dbgrid In-Reply-To: <824B7E52A4074518981FD88113E92946@natio.co.cu> References: <3C9622C3A2154AFC9B366E35230D473D@natio.co.cu> <824B7E52A4074518981FD88113E92946@natio.co.cu> Message-ID: El 14 de julio de 2017, 08:47, Ismael L. Donis Garcia via Lazarus-es escribió: > La verdad Jesús que yo no me explico de donde tu sacas las soluciones. > > Funciona Perfectamente. Que decirte..... ¿Gracias? > > Saludos Cordiales > -- > > >> Hola Ismael, seguramente habrán un par de cosas que podrías hacer para >> lograr lo que quieres de una forma mas directa, pero me parece >> apropiado hacerte una sugerencia para esos casos como en que aquí nos >> ocupa. En este punto te encuentras procesando un evento OnEditingDone, >> sin un análisis muy detallado es difícil saber que ocurrió antes y que >> ocurrirá después, solo sabemos que en algún punto el grid seleccionará >> el campo siguiente. Entonces estamos en la situación en la que se >> desea alterar el comportamiento pero no sabemos en medio de cuantas >> capas de procesamiento estamos. En estos casos sería muy útil >> simplemente dejar que las cosas sucedan y al primer momento disponible >> tomar acción. Para ello hay dos formas, algunos usan Timers pero en >> realidad no soy fan de esa técnica y por eso te sugiero una segunda >> alternativa. Lazarus cuenta con un método de postergar una acción de >> tal manera que se efectué cuando haya terminado de hacer lo que sea >> que esté haciendo, ya sea una interacción con el usuario mediante el >> ratón o el teclado, o alguna otra cosa. Para ello lo que se tiene que >> hacer es usar el procedimiento Application.QueueAsyncCall, ésta toma >> dos parámetros: un método y un dato cuyo valor puede ser a nuestra >> conveniencia o 0. El método es el procedimiento que la aplicación >> llamará justo cuando no tenga otra cosa mas que hacer. Se usa de la >> siguiente forma: >> >> // agregar RegresarAColumnaCantidad en la declaración de Tfvsal >> .... >> procedure RegresarAColumnaCantidad(Data: PtrInt); >> .... >> >> // poner en la fila de espera de métodos a procesar .... >> .... >> Application.MessageBox('La cantidad a dar salida no puede ser mayor a >> la existencia.' , pchar(Self.Caption), MB_ICONINFORMATION); >> Application.QueueAsyncCall(@RegresarAColumnaCantidad, 0); >> .... >> >> // luego o antes como quieras, la implementación de >> RegresarColumnaACantidad >> procedute Tfvsal.RegresarAColumnaCantidad(Data: PtrInt); >> begin >> dbg.SelectedIndex := NUMERODECOLUMNA; >> end; >> >> y eso teóricamente :), debería funcionar. >> >> Como un tip extra, si colocas el cursor el algún punto de la palabra >> @RegresarAColumnaCantidad y presionas SHIFT+CTRL+C, Lazarus no solo >> declarará el método por ti, sino también introducirá una >> implementación vacía lista para tu línea "dbg.SelectedIndex := >> NUMERODECOLUMNA;" >> >> Saludos. >> >> Jesus Reyes A. >> _______________________________________________ >> Lazarus-es mailing list >> Lazarus-es en lists.lazarus-ide.org >> https://lists.lazarus-ide.org/listinfo/lazarus-es >> > > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus-ide.org > https://lists.lazarus-ide.org/listinfo/lazarus-es -- usuario linux #274354 normas de la lista: http://wiki.debian.org/es/NormasLista como hacer preguntas inteligentes: http://www.sindominio.net/ayuda/preguntas-inteligentes.html From slibre en natio.co.cu Fri Jul 14 20:35:13 2017 From: slibre en natio.co.cu (Ismael L. Donis Garcia) Date: Fri, 14 Jul 2017 14:35:13 -0400 Subject: [Lazarus-es] No cambiar de columna en dbgrid References: <3C9622C3A2154AFC9B366E35230D473D@natio.co.cu> <824B7E52A4074518981FD88113E92946@natio.co.cu> Message-ID: <626B12582118418989FAB7DC9E662B7D@natio.co.cu> -- Ismael Devuan User : http://distrowatch.com/table.php?distribution=devuan ----- Original Message ----- From: "Felix Perez via Lazarus-es" To: "Spanish version of Lazarus List" Cc: "Felix Perez" Sent: Friday, July 14, 2017 1:49 PM Subject: Re: [Lazarus-es] No cambiar de columna en dbgrid > El 14 de julio de 2017, 08:47, Ismael L. Donis Garcia via Lazarus-es > escribió: >> La verdad Jesús que yo no me explico de donde tu sacas las soluciones. >> >> Funciona Perfectamente. Que decirte..... > > ¿Gracias? Sería muy poco para los conocimientos que me ha brindado. > >> >> Saludos Cordiales >> -- >> >> >>> Hola Ismael, seguramente habrán un par de cosas que podrías hacer para >>> lograr lo que quieres de una forma mas directa, pero me parece >>> apropiado hacerte una sugerencia para esos casos como en que aquí nos >>> ocupa. En este punto te encuentras procesando un evento OnEditingDone, >>> sin un análisis muy detallado es difícil saber que ocurrió antes y que >>> ocurrirá después, solo sabemos que en algún punto el grid seleccionará >>> el campo siguiente. Entonces estamos en la situación en la que se >>> desea alterar el comportamiento pero no sabemos en medio de cuantas >>> capas de procesamiento estamos. En estos casos sería muy útil >>> simplemente dejar que las cosas sucedan y al primer momento disponible >>> tomar acción. Para ello hay dos formas, algunos usan Timers pero en >>> realidad no soy fan de esa técnica y por eso te sugiero una segunda >>> alternativa. Lazarus cuenta con un método de postergar una acción de >>> tal manera que se efectué cuando haya terminado de hacer lo que sea >>> que esté haciendo, ya sea una interacción con el usuario mediante el >>> ratón o el teclado, o alguna otra cosa. Para ello lo que se tiene que >>> hacer es usar el procedimiento Application.QueueAsyncCall, ésta toma >>> dos parámetros: un método y un dato cuyo valor puede ser a nuestra >>> conveniencia o 0. El método es el procedimiento que la aplicación >>> llamará justo cuando no tenga otra cosa mas que hacer. Se usa de la >>> siguiente forma: >>> >>> // agregar RegresarAColumnaCantidad en la declaración de Tfvsal >>> .... >>> procedure RegresarAColumnaCantidad(Data: PtrInt); >>> .... >>> >>> // poner en la fila de espera de métodos a procesar .... >>> .... >>> Application.MessageBox('La cantidad a dar salida no puede ser mayor a >>> la existencia.' , pchar(Self.Caption), MB_ICONINFORMATION); >>> Application.QueueAsyncCall(@RegresarAColumnaCantidad, 0); >>> .... >>> >>> // luego o antes como quieras, la implementación de >>> RegresarColumnaACantidad >>> procedute Tfvsal.RegresarAColumnaCantidad(Data: PtrInt); >>> begin >>> dbg.SelectedIndex := NUMERODECOLUMNA; >>> end; >>> >>> y eso teóricamente :), debería funcionar. >>> >>> Como un tip extra, si colocas el cursor el algún punto de la palabra >>> @RegresarAColumnaCantidad y presionas SHIFT+CTRL+C, Lazarus no solo >>> declarará el método por ti, sino también introducirá una >>> implementación vacía lista para tu línea "dbg.SelectedIndex := >>> NUMERODECOLUMNA;" >>> >>> Saludos. >>> >>> Jesus Reyes A. >>> _______________________________________________ >>> Lazarus-es mailing list >>> Lazarus-es en lists.lazarus-ide.org >>> https://lists.lazarus-ide.org/listinfo/lazarus-es >>> >> >> >> _______________________________________________ >> Lazarus-es mailing list >> Lazarus-es en lists.lazarus-ide.org >> https://lists.lazarus-ide.org/listinfo/lazarus-es > > > > -- > usuario linux #274354 > normas de la lista: http://wiki.debian.org/es/NormasLista > como hacer preguntas inteligentes: > http://www.sindominio.net/ayuda/preguntas-inteligentes.html > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus-ide.org > https://lists.lazarus-ide.org/listinfo/lazarus-es > From maximiliano.duarte en gmail.com Wed Jul 19 15:32:37 2017 From: maximiliano.duarte en gmail.com (Maxi) Date: Wed, 19 Jul 2017 10:32:37 -0300 Subject: [Lazarus-es] quitar foco a un componente get off focus In-Reply-To: References: Message-ID: no se si el form tiene foco, no recuerdo. pero podes hacer form1.setfocus El 9 de julio de 2017, 5:15, hfiandor via Lazarus-es < lazarus-es en lists.lazarus-ide.org> escribió: > Estimado Adrian, nuchas gracias, voy a probar. > > Saludos > > Hfiandor > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus-ide.org > https://lists.lazarus-ide.org/listinfo/lazarus-es > > -- El que pregunta aprende, y el que contesta aprende a responder. No a la obsolecencia programada: http://www.rtve.es/noticias/20110104/productos-consumo-duran-cada-vez-menos/392498.shtml Linux User #495070 http://domonetic.com/blog ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: