Pregunta

pongo un TLinkLabel en mi forma, la había especificado con una leyenda que incluye un enlace HTML válido, y de algunos agradable azul texto subrayado. Cuando me encontré con el programa, que esperaba que invocan Firefox (navegador predeterminado) y abrir el enlace automáticamente. Al parecer, ese no es el caso.

El archivo de ayuda dice que tengo que codificar esto en un controlador de eventos OnLinkClick. No dice nada acerca de cómo hacerlo, sin embargo. Que va a pasar en un valor de cadena llamado "Enlace". ¿Cómo se dice "invocar el navegador por defecto y lo han Enlace abierta"?

¿Fue útil?

Solución

Puede llamar a ShellExecute. Escribí este método para llamadas genéricas, y debe funciona en su caso.

procedure ShellOpen(const Url: string; const Params: string = '');
begin
  ShellAPI.ShellExecute(0, 'Open', PChar(Url), PChar(Params), nil, SW_SHOWNORMAL);
end;

En su código debe llamar a este

procedure TForm1.LinkLabelClick(Sender: TObject);
begin
  ShellOpen(LinkLabel.Caption);
end;

Otros consejos

TLinkLabel proporciona una etiqueta que ve como un enlace. Es su trabajo como programador para que sea actúan como un enlace debido a que sólo se puede saber lo que se supone que actuar como enlaces en su programa. Querías la etiqueta para abrir automáticamente el navegador web por defecto del usuario utilizando la dirección URL en la etiqueta, pero eso no es lo único que hacen enlaces. Por ejemplo:

  • Internet Explorer no es mi navegador por defecto, pero cuando hago clic en un vínculo en Internet Explorer, no espero que la página vinculada a abrir en Firefox.
  • Al hacer clic en un enlace en el programa de ayuda, espero que el tema enlazado a aparecer en el programa de ayuda, no en cualquier navegador web en absoluto.
  • Las páginas de preferencias de Eclipse son muy complicados. Configuración de una página a veces se relacionan con los ajustes de otra página. Hay enlaces en las páginas que llevan al usuario directamente a la página correspondiente. No hay una URL y no HTML implicados en este caso, y sin embargo, son todavía las etiquetas con texto subrayado.

Algunos programas tratan de ofrecer una opción entre la apertura de enlaces en nuevas ventanas frente a la reutilización de ventanas viejas. No se puede poner en práctica esa función sin saber qué navegador está en uso. Su programa podría ofrecer al usuario una opción para ignorar la configuración por defecto del navegador y utilizar siempre una específica. Para ello, el control de la interfaz de usuario no puede hacer demasiadas suposiciones acerca de lo que el programa tiene que hacer.

supongo que te refieres a un control TLinkLabel que viene con Delphi. (Mis versiones no tienen un componente de este tipo.) Imagino que el control Delphi está destinado a imitar el de la biblioteca de clases .Net . Puede contener varios enlaces, y cada enlace puede hacer algo diferente.

Si desea un control que siempre hace la acción predeterminada del shell para las direcciones URL, y luego considerar el uso de un TLinkLabel diferente; el uno por Alexander Bach hace exactamente lo que se esperaba. Es a partir de Delphi 3, pero debería funcionar sin modificaciones en todas las versiones posteriores, así, como Delphi 2009. Si nos fijamos en el código, verá cómo funciona. Simplemente llama ShellExecute , como Cesar's responder demuestra.

Tengo todo tipo de problemas con TLinkLabel que se incluye con Delphi 2010. a) El control no rinde como un hipervínculo, sino como un simple texto de la etiqueta en el formulario. b) el cursor no cambia señalar que este es un enlace a pesar de que establece la propiedad Cursor. c) el evento OnLinkClick no se dispara en absoluto. Estoy trabajando en Windows 7.

Por lo tanto, en lo que a mí respecta, TLinkLabel hace no como debería y no sirve para nada. ShellExecute es la única solución y debe ser colocado en el evento OnClick.

Yo uso un control denominado TInternetLabel lugar. Hace exactamente lo que quiere:. Al hacer clic se abre el navegador para que no se tiene que poner el código en el evento OnClick

LOL, es gracioso. Así que en lugar de establecer crHandPoint como cursor, color y subrayado fuente y llenando el evento OnClick con la norma TLabel tenemos componente que sabe etiqueta de enlace y que, en todo lo que necesito suministrándole misma On (Enlace) Haga clic en evento:))

Lo único que es bueno para es que hace más fácil para incrustar link en un texto y que está utilizando el estilo del sistema de enlace ...

p.s .: realmente usted tiene que poner en el Some text with <a href="some URL">link</a> Caption y configuración OnLinkClick a que ShellExecute ...

He intentado esta solución pero todavía dio problemas en Delphi XE4, probablemente robaba ShellOpen no entiende el código HTML en el subtítulo. Lo que funcionó para mí fue una combinación de Cesar Romero (el código básico), Adam Feistner (El código HTML en el Caption) y una solución más:


  • Poner el URL en el campo INDIRECTA.
  • Cambie la línea: ShellOpen (LinkLabel.Caption); a ShellOpen (LinkLabel.Hint);

Esto funcionó para mí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top