tlvlgraphcontrol casesensitive

Rund um die LCL und andere Komponenten
Antworten
arturx
Beiträge: 140
Registriert: Fr 21. Nov 2008, 11:29
OS, Lazarus, FPC: Winux (L 1.0.6.xy FPC 2.6.z)
CPU-Target: 32/64Bit

tlvlgraphcontrol casesensitive

Beitrag von arturx »

Bei der Nutzung von lvlgraphcontrol stört mich manchmal, dass lvlgraphcontrol.getedge(..) casesensitive ist.
Dieses Verhalten ließe sich leicht umgehen durch eine geringe Änderung des Codes (s.u.).
Das ist natürlich trivial, nur ändere ich ungern den Code einer vorgegebenen Komponente.
Eine eigene Komponente abzuleiten mach m.E. keinen Sinn, da die Eigenschaft von allgem. Interesse sein sollte.

1.property casesensitive : boolean müsste hinzugefügt werden.
2.tlvlgraphcontrol.getnode etwas geändert werden:

Code: Alles auswählen

 
function TLvlGraph.GetNode(aCaption: string; CreateIfNotExists: boolean
  ): TLvlGraphNode;
var
  i: Integer;
begin
  i:=NodeCount-1;
  If casesensitive                                                   // <--- new
    then while (i>=0) and (aCaption<>Nodes[i].Caption) do dec(i)          // <--- original
    else while (i>=0) and (0<>ansicomparetext(aCaption,Nodes[i].Caption)) do dec(i); // <--- new
  if i>=0 then begin
    Result:=Nodes[i];
   ........ etc ....
   .....
end;
 

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: tlvlgraphcontrol casesensitive

Beitrag von wp_xyz »

Ich habe deine Anregung aufgenommen und leicht geändert in Trunk hochgeladen. Es gibt nun ein neues Property "CaseSensitive", das du für deine Zwecke auf true setzen kannst.

arturx
Beiträge: 140
Registriert: Fr 21. Nov 2008, 11:29
OS, Lazarus, FPC: Winux (L 1.0.6.xy FPC 2.6.z)
CPU-Target: 32/64Bit

Re: tlvlgraphcontrol casesensitive

Beitrag von arturx »

Super, vielen Dank.
Vielleicht kannst du den folgenden Hinweis auch berücksichtigen :
Um die Hintergrundfarbe zu ändern, sollte die Property color nutzbar sein.
einfache Lösung :

Code: Alles auswählen

procedure TCustomLvlGraphControl.Paint;
var
  w: Integer;
  TxtH: integer;
begin
  inherited Paint;
  ....
  ........ etc.....
  .....
  // background
  if Draw(lgdsBackground) then begin
    Canvas.Brush.Style:=bsSolid;
// discarded:  Canvas.Brush.Color:= clWhite; <---- old
    Canvas.Brush.Color:=color; // <---- new
    Canvas.FillRect(ClientRect);
  end;

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: tlvlgraphcontrol casesensitive

Beitrag von wp_xyz »

Erledigt.

Antworten