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 19-02-2018
DrakStorm DrakStorm is offline
Miembro
NULL
 
Registrado: may 2013
Posts: 12
Poder: 0
DrakStorm Va por buen camino
Muchas gracias por tu ayuda lo solucione de la siguiente manera

Código Delphi [-]

procedure TFMapa.GMMark2Click(Sender: TObject; LatLng: TLatLng; Index: Integer;
  LinkedComponent: TLinkedComponent);
begin


 if GMMark2.Count > 0 then
    begin
     if CMap > 1 then
       begin
        AQmap.Active := false;
        AQmap.SQL.Text := 'select id, tipodelito, otros from oficios WHERE id="'+GMMark2.items[linkedcomponent.id - F].title+'"';
        AQmap.Active := true;
       end
        else
       begin
        AQmap.Active := false;
        AQmap.SQL.Text := 'select id, tipodelito, otros from oficios WHERE id="'+GMMark2.items[linkedcomponent.id].title+'"';
        AQmap.Active := true;
       end;

        Edit1.Text := AQmap.FieldByName('id').AsString;
        Edit2.Text := AQmap.FieldByName('tipodelito').AsString;
        Edit3.Text := AQmap.FieldByName('otros').AsString;

    end;



end;

procedure TFMapa.Button1Click(Sender: TObject);

var Marcador : TMarker;

begin

  PrincipalF.AQofi.First;

while not PrincipalF.AQofi.Eof do

    Begin

    if Principalf.AQofi.FieldByName('lat').value <> null  then
        begin
          Lat4 := Principalf.AQofi.FieldByName('lat').Value;
          Lng4 := Principalf.AQofi.FieldByName('lng').Value;
          NombreMark := Principalf.AQofi.FieldByName('id').AsString;
          marcador := GMMark2.Add(Lat4, Lng4, NombreMark);
          marcador.Icon := 'C:\ComSoft\puntoazul.png';
          I := I + 1;
        end;

     PrincipalF.AQofi.Next;
    End;
     CMap := CMap + 1;
     GMMark2.ZoomToPoints;

end;

procedure TFMapa.Button2Click(Sender: TObject);

begin

if GMMark2.Count > 0 then
    Begin
    F := I;
    GMMark2.clear;
    close;
    End;
end;

Lo que hago es contar los marcadores que se generan y luego se los resto al id del marcador solo después de la primera carga.

Se que para programadores mas expertos esto es un aborto de la naturaleza pero es lo único que se me ocurrió a mi, si tienes una solución mucho mas optima te lo agradecería mucho.

Desde ya muchas gracias por toda tu ayuda estaba muy trabado con ese tema.
Responder Con Cita
  #2  
Antiguo 20-02-2018
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.289
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por DrakStorm Ver Mensaje
...si tienes una solución mucho mas optima te lo agradecería mucho.
En el mensaje anterior te comenté algunas opciones.

La primera a probar sería utilizando la popiedad ZIndex de cada marca en lugar del ID. Parece que ese índice sí se resetea al hacer el Clear.
Código Delphi [-]

  GMMark2.items[linkedcomponent.ZIndex].title

La segunda (y ahora me acabo de dar cuenta) es utilizar d9irectamente la propiedad de la marca, en lugar de buscar en la lista el título, ya que también la tiene. Es decir, utilizar esto para acceder al título:

Código Delphi [-]
  AQmap.SQL.Text := 'select id, tipodelito, otros from oficios WHERE id="'+TMarker(linkedcomponent).title+'"';
Y en todo caso, comprobar antes que linkedcomponent es un TMarker.

La tercera, que también te he comentado, es usar una función para buscar el título que esperas sin usar el ID.

Código Delphi [-]
function GetTitle(GMMarker:TGMMarker; LinkedComponent: TLinkedComponent):string;
var
  i:integer;
begin
  Result := '';
  for i := 0 to (GMMarker.Count - 1) do begin
    if (GMMarker.Items[i] = LinkedComponent) then begin
      Result := GMMarker.Items[i].Title;
      Break;
    end;
  end;
end;

En este caso usarías algo así:

Código Delphi [-]
AQmap.SQL.Text := 'select id, tipodelito, otros from oficios WHERE id="'+GetTitle(GMMark2, linkedcomponent)+'"';

Más o menos son las que se me ocurren.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 20-02-2018
DrakStorm DrakStorm is offline
Miembro
NULL
 
Registrado: may 2013
Posts: 12
Poder: 0
DrakStorm Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
En el mensaje anterior te comenté algunas opciones.

La primera a probar sería utilizando la popiedad ZIndex de cada marca en lugar del ID. Parece que ese índice sí se resetea al hacer el Clear.
Código Delphi [-]

  GMMark2.items[linkedcomponent.ZIndex].title

La segunda (y ahora me acabo de dar cuenta) es utilizar d9irectamente la propiedad de la marca, en lugar de buscar en la lista el título, ya que también la tiene. Es decir, utilizar esto para acceder al título:

Código Delphi [-]
  AQmap.SQL.Text := 'select id, tipodelito, otros from oficios WHERE id="'+TMarker(linkedcomponent).title+'"';
Y en todo caso, comprobar antes que linkedcomponent es un TMarker.

La tercera, que también te he comentado, es usar una función para buscar el título que esperas sin usar el ID.

Código Delphi [-]
function GetTitle(GMMarker:TGMMarker; LinkedComponent: TLinkedComponent):string;
var
  i:integer;
begin
  Result := '';
  for i := 0 to (GMMarker.Count - 1) do begin
    if (GMMarker.Items[i] = LinkedComponent) then begin
      Result := GMMarker.Items[i].Title;
      Break;
    end;
  end;
end;

En este caso usarías algo así:

Código Delphi [-]
AQmap.SQL.Text := 'select id, tipodelito, otros from oficios WHERE id="'+GetTitle(GMMark2, linkedcomponent)+'"';

Más o menos son las que se me ocurren.

Paso a comentar los resultados de las soluciones que me aportaste.

Primera solución: tira error (TLinkedComponent does not contain a member name ZIndex).

Segunda solución: esta funciona perfecto y creo que para mi caso es la mas practica.

Tercera solución: funciona perfecto pero creo que no es la mas acorde para mi caso en particular.

Bueno espero que este post ayude a alguien mas también, y desde ya mas que agradecido por todas tus respuestas y el tiempo que le dedicaste a mi tema, MUCHAS PERO MUCHAS Gracias Neftali [Germán.Estévez] sos un crack.
Responder Con Cita
  #4  
Antiguo 20-02-2018
DrakStorm DrakStorm is offline
Miembro
NULL
 
Registrado: may 2013
Posts: 12
Poder: 0
DrakStorm Va por buen camino
Cita:
Empezado por DrakStorm Ver Mensaje
Primera solución: tira error (TLinkedComponent does not contain a member name ZIndex).
Corrijo ZIndex no funciona con GMMarker pero si funciona perfecto con TMarker.
Responder Con Cita
  #5  
Antiguo 20-02-2018
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.289
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por DrakStorm Ver Mensaje
Corrijo ZIndex no funciona con GMMarker pero si funciona perfecto con TMarker.

No lo había leído antes de escribir el último mensaje.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 20-02-2018
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.289
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por DrakStorm Ver Mensaje
Primera solución: tira error (TLinkedComponent does not contain a member name ZIndex).
Tienes que hacer un CAST como se hace en la segunda...
Aunque si la segunda te funciona, coincido en que parece la más adecuada y directa.

Código Delphi [-]
  GMMark2.items[TMarker(linkedcomponent).ZIndex].title
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
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


La franja horaria es GMT +2. Ahora son las 19:01:28.


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