Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-03-2005
Avatar de torito
torito torito is offline
Miembro
 
Registrado: jun 2003
Ubicación: Querétaro, Mex.
Posts: 349
Poder: 24
torito Va por buen camino
ok magui, tu tienes que trabajar con el renderer de tu capa y de ahi escalarla, te mando el ejemplo de esto
Código:
procedure TForm2.bbuniClick(Sender: TObject);
var
a,breakVal,z : integer;
zaz : string;
begin
try
memo1.Clear;
recs:=l.Records;
l.Renderer:=nil;
l.Renderer:=ImoClassBreaksRenderer(CreateOleObject('MapObjects2.ClassBreaksRenderer'));
tdesc:=recs.TableDesc;
fields:=recs.Fields;
cbr:=ImoClassBreaksRenderer(l.Renderer);
cbr.Field:=tdesc.FieldName[cbx.ItemIndex];
if cbx.Text='' then
 begin
 showmessage('No Se Eligio Un Campo');
 exit;
 end;
 strsUniqueValues:= IMoStrings(CreateOleObject('MapObjects2.strings'));
 //fld := IMoField(CreateOleObject('MapObjects2.Field'));

 fld := fields.Item(tdesc.FieldName[cbx.ItemIndex]);

except//if varisempty(fld) then
 //begin
 showmessage('Hay Un Error En La Tabla!!');
 exit;
 end;
z:=0;
recs.MoveFirst;
a:=1;
while (not recs.EOF) do
 begin
 strsUniqueValues.Add(fld.value);
 recs.MoveNext;
 inc(z);
 if z = 100 then
  begin
  a:=application.MessageBox( 'USTED TIENE MÁS DE 100 VARIABLES UNICAS, DESEA CONTINUAR A PESAR DE QUE DILATE MUCHO EL PROCESO??', 'EXCEDENTE DE VARIABLES...', MB_OKCANCEL);
  if  a=2 then
  exit; //se sale de la aplicacion
  end; //fin if
 end; //fin while
{a:=1;
if strsUniqueValues.Count > 100 then
 a:=application.MessageBox( 'USTED TIENE MÁS DE 100 VARIABLES UNICAS, DESEA CONTINUAR??', 'EXCEDENTE DE VARIABLES...', MB_OKCANCEL);
if  a=2 then
 exit; //se sale de la aplicacion}
if (vmr=nil)then
vmr:= IMoValueMapRenderer(CreateOleObject('MapObjects2.ValueMapRenderer'));

vmr.SymbolType:=l.Symbol.SymbolType;
vmr.Field:=fld.Name;
vmr.ValueCount:=strsUniqueValues.Count;
vmr.UseDefault:=false;
for a:=0 to strsUniqueValues.Count-1 do
 begin
 vmr.Value[a]:=strsUniqueValues.Item(a);
// showmessage(strsUniqueValues.Item(a));
 end;

memo1.Lines.Add('       LISTADO DE VALORES UNICOS!!');
memo1.Lines.Add('       ');

for a:=0 to vmr.ValueCount-1 do
 begin
 zaz:='';
 zaz:=inttoStr(a+1);
 zaz:=zaz+'     '+vmr.Value[a];
 memo1.Lines.Add(zaz);
 end; //fin for llenado memo1

cbr.BreakCount:=strsUniqueValues.Count;

bbuni2.Enabled:=true;

end; //fin procedure
Responder Con Cita
  #2  
Antiguo 22-03-2005
Magui Magui is offline
Registrado
 
Registrado: dic 2004
Posts: 4
Poder: 0
Magui Va por buen camino
Smile

gracias por el codigo..

lo he probado ..pero no me muestra el mapa con los colores asignados, me imagino que esta es la parte donde se cambia los colores..

if (vmr=nil)then
vmr:= IMoValueMapRenderer(CreateOleObject('MapObjects2.ValueMapRenderer'));

vmr.SymbolType:=l.Symbol.SymbolType;
vmr.Field:=fld.Name;
vmr.ValueCount:=strsUniqueValues.Count;
vmr.UseDefault:=false;
for a:=0 to strsUniqueValues.Count-1 do
begin
vmr.Value[a]:=strsUniqueValues.Item(a);
// showmessage(strsUniqueValues.Item(a));
end;

me gustaria que me expliques un poco mas que tengo que hacer para que funcione..
Responder Con Cita
  #3  
Antiguo 22-03-2005
Avatar de torito
torito torito is offline
Miembro
 
Registrado: jun 2003
Ubicación: Querétaro, Mex.
Posts: 349
Poder: 24
torito Va por buen camino
aqui esta el código para los colores
Código:
procedure TForm2.bbuni2Click(Sender: TObject);
var
a,z,si : integer;
begin
if rb3.Checked then
 begin
 si:=application.MessageBox( 'ESTA USTED SEGURO DE QUERER PONER COLOR UNO A UNO A CADA CLASIFICACIÓN?? ','COLOR UNO A UNO...', MB_OKCANCEL);
 If si = 2 Then
  exit;
 end;

if panel3.Visible=true then
cbr.RampColors(rcolor3.color,rcolor4.color);

l.Renderer:=nil;
if vmr.SymbolType = moFillSymbol then
 for a:=0 to vmr.ValueCount-1 do
  begin
  if cboxuni.Checked then
   begin
   vmr.Symbol[a].Outline:=true;
   vmr.Symbol[a].OutlineColor:=moblack;
   end else
   begin
   vmr.Symbol[a].Outline:=false;
   vmr.Symbol[a].OutlineColor:=vmr.Symbol[a].Color;
   end;
   if panel3.Visible=true then
    vmr.Symbol[a].Color:=cbr.Symbol[a].Color;
    ///fin si es por rampa
   if rb3.Checked then
    begin
     showmessage('ELIJA EL COLOR PARA EL VALOR '+vmr.Value[a]);
     colores.Execute;
     vmr.Symbol[a].Color:=colores.Color;
    end;//fin si es color unico
  end;//fin for
 if l.shapeType = moShapeTypeMultipoint then
 z:=0
 else
 z:=l.shapeType-21;
 vmr.SymbolType:=z;

 close;
{l.Renderer:=cbr;
form1.Map1.Refresh;}
l.Renderer:=vmr;
form1.Map1.Refresh;
form1.refresca_legend;
cbr:=nil;
vmr:=nil;
end; //fin procedure
la verdad hace mucho que no lo trabajo asi que te recomiendo si tienes dudas que leas el manual de Map Objects donde viene explicado..

Nota: si alguien sabe el comando para poner parrafos de referencia que ya hayan sido escritos se lo agradecaria mucho que me lo hiciera saber... saludos
Responder Con Cita
  #4  
Antiguo 24-03-2005
Magui Magui is offline
Registrado
 
Registrado: dic 2004
Posts: 4
Poder: 0
Magui Va por buen camino
Thumbs up

gracias por el codigo torito...funciono bien..

solo tenia que aumentar esto al primer codigo que me enviaste:
colores.Execute;
vmr.Symbol[a].Color:=colores.Color;

y al final...
map1.refresh;

saludos.
Responder Con Cita
  #5  
Antiguo 28-03-2005
Avatar de torito
torito torito is offline
Miembro
 
Registrado: jun 2003
Ubicación: Querétaro, Mex.
Posts: 349
Poder: 24
torito Va por buen camino
ok, de nada magui y siguele hechando muchas ganas...
Responder Con Cita
  #6  
Antiguo 10-06-2005
Kerodile Kerodile is offline
Registrado
 
Registrado: jun 2005
Posts: 5
Poder: 0
Kerodile Va por buen camino
Lightbulb

Hola
Soy nuevo en este tema, estoy trabajando con Delphy 5 y MO21, tengo un form con un Map y un legend, como hago para hacer el link entre estos componentes, si alguien me ayuda se lo agradezco de antemano.
Responder Con Cita
  #7  
Antiguo 10-06-2005
Avatar de torito
torito torito is offline
Miembro
 
Registrado: jun 2003
Ubicación: Querétaro, Mex.
Posts: 349
Poder: 24
torito Va por buen camino
te paso el código, pero no creo que te sirva de mucho si no sabes como se debe exportar el legend.... te recomiendo que leas todo el hilo para que sepas como exportarlo... saludos


Código:
procedure refresca_legend();
var
imap:_dmap;
intf:idispatch;
loadit:wordbool;
begin
with form1 do
 begin
 imap:=map1.controlinterface;
 intf:=imap as idispatch;
 legend1.setmapsource(intf);
 loadit:=true;
 legend1.loadlegend(loadit);
 legend1.showalllegend;
 end;
end;
Responder Con Cita
  #8  
Antiguo 11-06-2005
Kerodile Kerodile is offline
Registrado
 
Registrado: jun 2005
Posts: 5
Poder: 0
Kerodile Va por buen camino
Gracias por la respuesta, y tienes razon casi no entendi, leí los hiilos anteriores y me di cuenta que tengo que modificar el .pas del legend no se si me puedes enviar esas modificaciones, estoy trabajando con Delphy 5, de antemano muchisimas gracias.
Responder Con Cita
  #9  
Antiguo 13-06-2005
Avatar de torito
torito torito is offline
Miembro
 
Registrado: jun 2003
Ubicación: Querétaro, Mex.
Posts: 349
Poder: 24
torito Va por buen camino
ok, te lo adjunto a este comentario... saludos
Archivos Adjuntos
Tipo de Archivo: zip unit MO21legend_TLB Delphi5.zip (3,9 KB, 102 visitas)
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 04:43:42.


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