AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Delphi-PRAXiS - Lounge Delphi-News aus aller Welt Programa complejo resuelto con una línea de código en Delphi
Thema durchsuchen
Ansicht
Themen-Optionen

Programa complejo resuelto con una línea de código en Delphi

Ein Thema von DP News-Robot · begonnen am 30. Aug 2021
Antwort Antwort
Benutzerbild von DP News-Robot
DP News-Robot

Registriert seit: 4. Jun 2010
14.985 Beiträge
 
#1

Programa complejo resuelto con una línea de código en Delphi

  Alt 30. Aug 2021, 21:31
Partimos de que hemos realizado una llamada a una API, que nos devuelve un resultado en formato JSON, con 1000 campos, pero sólo queremos visualizar 3 de ellos (URL, TITLE, EXPLANATION)





Añadimos un componente tRestResponseDataSetAdapter, un tFDMemTable y para hacer pruebas un tStringGrid, que nos mostrará todo el conjunto de datos
En la propiedad "Dataset" del tRestResponseDataSetAdapter seleccionamos FDMemTable1 y en "Response" selecciono "RESTResponse1"


Con el botón derecho del ratón pulsamos sobre el componente FDMemtable1 y seleccionamos AddBindSource, con lo se creará otro componente llamado "BindSourceDB1"

Volvemos a pulsar con el botón derecho del ratón sobre FDMemTable1 y seleccionamos Bind Visually... y se abrirá una nueva ventana llamada "LiveBindings Designer"




Si vinculamos FDmemTable1 con el componente StringGrid1, uniendo con el ratón los campos marcados con un asterisco, de esta forma:





al iniciar el programa llamando a "Execute", de esta forma:

PROCEDURE TFORM1.INICIO;
BEGIN
RESTRequest1.Execute;
END;
veremos que los 1000 campos que nos ha devuelto la API se ven el Grid, que no es lo queremos en este caso, ya que únicamente necesitamos que se muestren en pantalla 3 de ellos, entonces ¿cómo se hace esto?, pues gracias al componente tBindingsList ¡Este es el truco de magia!


1) Hacemos doble clic sobre el componente BindingsList1



(que se habrá creado al hacer la vinculación anterior)



2) Sobre el apartado Bind Components hacemos clic con el botón derecho y seleccionamos la opción "New LinkControlToField1" y hacemos clic sobre esa nueva línea que se habrá creado para ver las propiedades en el Inspector de Objetos.




Allí en la propiedad "DataSource" seleccionamos "BindSourceDB1" y en "FieldName" escribimos "Title" (es uno de los campos que nos interesa visualizar)






Cerramos la ventana de Edición del BindingsList y Actualizamos la ventana "LiveBindings Designer" haciendo clic con el botón derecho del ratón y activando el menú "Refresh Designer" y veremos que se ha creado un nuevo ítem "Title (Invalid)", lo de Invalid me imagino que es por que el dataset está cerrado en la fase de diseño.


y hacemos lo mismo para los otros dos campos.
Después sólo queda vincular los ítems "Title (invalid), url (invalid) y explanation (invalid)" a los componentes tEdit-Text, uniendo con el ratón los campos anteriores con el campo "Text", tal como se muestra en la imagen:





Eliminamos el componente "StringGrid1"


Y eso es todo, ahora al ejecutar el programa

PROCEDURE TFORM1.INICIO;
BEGIN
RESTRequest1.Execute;
END; Veríamos el resultado que nos interesa, lo que se traduce en una mayor rapidez de ejecución del programa, ya que nos ahorramos procesar 997 campos, de los 1000 que devuelve la API.





Además, como han podido ver, todo se ha hecho de forma visual con sólo 1 línea de código, simplemente asombroso y es que además este mismo programa funciona en Android, IOS, Linux y Windows y la portabilidad es instantánea.

¿A que merece la pena pasarse a Delphi?





Suscribirse :



Weiterlesen...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz