Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Tag Cloud Komponente (https://www.delphipraxis.net/173633-tag-cloud-komponente.html)

Gruber_Hans_12345 7. Mär 2013 17:19

Tag Cloud Komponente
 
Suche auch noch eine Komponente für Tag Cloud

Habe im moment diese hier http://www.be-precision.com/products/tagcloud/
und dieses http://sourceforge.net/projects/icetagcloud/ (die läuft bei mir nicht da ich noch Delphi 2007 einsetze)

Kennt wer noch andere?

ConstantGardener 7. Mär 2013 18:59

AW: Tag Cloud Komponente
 
Hallo Hans,

icetagcloud ist etwas buggy, hab ich gleich verworfen. Die von bePrecision nutze ich im Moment. TMS hat auch eine Tag- und WordCloud-Compo. Ist ganz gut ist aber meiner Meinung nach keine wirkliche TagCloud, da die einzelnen Tags immer die gleiche Größe haben. :( Kannst ja mal schauen ob es was für dich ist.

cu cg

sh17 7. Mär 2013 19:20

AW: Tag Cloud Komponente
 
Kann man doch recht fix selbst programmieren.HTML generieren,im thtmlviewer anzeigen und Klicks abfassen.irgendwo habe ich noch ein Stück Quellcode dazu

Gruber_Hans_12345 7. Mär 2013 20:42

AW: Tag Cloud Komponente
 
Zitat:

Zitat von sh17 (Beitrag 1206452)
Kann man doch recht fix selbst programmieren.HTML generieren,im thtmlviewer anzeigen und Klicks abfassen.irgendwo habe ich noch ein Stück Quellcode dazu

Stimmt wäre auch eine Möglichkeit, falls du den Code noch findest ... werde auch mal schaun

CCRDude 8. Mär 2013 07:48

AW: Tag Cloud Komponente
 
Bin mir nicht sicher mit welcher Delphi-Version das kam, aber ein TGridPanel dürfte doch noch viel einfacher sein, oder?

sh17 8. Mär 2013 08:49

AW: Tag Cloud Komponente
 
hier mal ein Codeausschnitt, ich hoffe er ist verständlich. Es handelt sich dabei um ein PopUpFenster, müsste also sicher etwas angepasst werden.

die Tag-Liste besteht aus dem Wort und der Anzahl der Vorkommen des Wortes.

Delphi-Quellcode:
type
  TPopupDlgUKAT3TagCloud = class(TFMDropDown)
    TntListBox1: TListBox;
    HTMLViewer1: THTMLViewer;
    procedure FormCreate(Sender: TObject);
    procedure TntListBox1DblClick(Sender: TObject);
    procedure HTMLViewer1HotSpotClick(Sender: TObject; const SRC: String;
      var Handled: Boolean);
  private
    SelectedTag : String;
    function GenerateContent(_Cloud : TIntegerStringObjectList) : String;
  public
    class function ShowDialog(_ParentForm : TForm;_Owner : TWinControl;
                              _Cloud : TIntegerStringObjectList;_Position : TRect) : String;
  end;

implementation

{$R *.dfm}

procedure TPopupDlgUKAT3TagCloud.FormCreate(Sender: TObject);
begin
  TranslateComponent (self);
  Scaled := false;
  KeyPreview := true;
  Align := alNone;
  BorderWidth := 20;
  TLclFontHelper.SetWindowsFont(self.Font);
  DropDownPosition := ddpAbove;
  Sizable := false;
  AnimateDropDown := false;
  SelectedTag := '';

  HTMLViewer1.DefBackground := clWhite;
end;

class function TPopupDlgUKAT3TagCloud.ShowDialog(_ParentForm : TForm;_Owner : TWinControl;
                              _Cloud : TIntegerStringObjectList;_Position : TRect) : String;
var
  f : TPopupDlgUKAT3TagCloud;
  i : Integer;
begin
  Result := '';

  f := TPopupDlgUKAT3TagCloud.Create(_Owner);

    for i := 0 to _Cloud.Count-1 do
     f.TntListBox1.Items.Add(_Cloud[i].Value);

    try
      f.HTMLViewer1.LoadFromString(f.GenerateContent(_Cloud));
    except
      on E:Exception do TLOg.Log(true,P_FATAL,_('Fehler beim Laden der Seite.'),e);
    end;

  try
    f.RollDownForm(_ParentForm, _Position.Left, _Position.Top, 0,_Position.Right,_Position.Bottom); // Use last width
    Result := f.SelectedTag;
  except

  end;
  f.Free;
end;

function TPopupDlgUKAT3TagCloud.GenerateContent(
  _Cloud: TIntegerStringObjectList): String;
var
  i,min,max : Integer;
  s : double;
begin
  min := _Cloud.GetMinKey;
  max := _Cloud.GetMaxKey-min;
  Result := '<html><body>';
  for i := 0 to _Cloud.Count-1 do
  begin
    //hstr := hstr + '<a href="'+cloud[i].Value+'" style="font-size: '+inttostr(s)+'em; font-weight: '+inttostr(w)+'">'+cloud[i].Value+'</a>';
    s := _Cloud[i].Key - min;
    s := (s * 100) / max;
    s := 20 + (30 /100*s );
    Result := Result + '<a href="'+_Cloud[i].Value+'" style="text-decoration:none;font-weight:100;font-size: '+FloatToStr(s)+'px; tahoma,sans-serif;font">'+_cloud[i].Value+'</a>&nbsp;&nbsp;';

  end;
  Result := Result + '</body></html>';
end;

procedure TPopupDlgUKAT3TagCloud.TntListBox1DblClick(Sender: TObject);
begin
  if TntListBox1.ItemIndex < 0 then exit;
  SelectedTag := TntListBox1.Items[TntListBox1.ItemIndex];
  CloseDropDown;
end;

procedure TPopupDlgUKAT3TagCloud.HTMLViewer1HotSpotClick(Sender: TObject;
  const SRC: String; var Handled: Boolean);
begin
  SelectedTag := src;
  Handled := true;
  CloseDropDown;
end;

Bentissimo 8. Mär 2013 09:11

AW: Tag Cloud Komponente
 
Hallo zusammen,

ich benutze ebenfalls die Variante von Precision. Bis jetzt hatte ich noch keine Probleme. Obendrein sieht es ganz ordentlich aus und erlaubt auch Ansichten als Listen oder Stichwort-Index.

Für 15 € kannst Du da imho nicht viel falsch machen. :thumb:

greenmile 8. Mär 2013 16:39

AW: Tag Cloud Komponente
 
Ich nutze die TMS Komponenten, habe mit TMS immer noch die besten Erfahrungen gemacht.
Was genau sind denn die Precision Komponenten? Steige da nicht durch, welche Anbieter die unterstützen; eigentlich finde ich überhaupt keinen Namen ;)

sh17 8. Mär 2013 16:56

AW: Tag Cloud Komponente
 
Ich glaube du verwechselst hier "Tag Cloud" (Wortwolke) und "Cloud" (Daten speichern...)

Ralf Kaiser 8. Mär 2013 17:02

AW: Tag Cloud Komponente
 
Zitat:

Zitat von sh17 (Beitrag 1206531)
Ich glaube du verwechselst hier "Tag Cloud" (Wortwolke) und "Cloud" (Daten speichern...)

Zumndest hat TMS (neben den Cloud "Daten speichern" Komponenten) auch 2 Komponenten die so etwas wie eine TagCloud darstellen (allerdings ohne verschiedene Fontgrössen wie es bei einer TagCloud im Netz üblich ist: Siehe hier


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:06 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