tlvlgraphcontrol casesensitive

Rund um die LCL und andere Komponenten

tlvlgraphcontrol casesensitive

Beitragvon arturx » 6. Okt 2017, 11:25 tlvlgraphcontrol casesensitive

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;
 
arturx
 
Beiträge: 138
Registriert: 21. Nov 2008, 11:29
OS, Lazarus, FPC: Winux (L 1.0.6.xy FPC 2.6.z) | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon wp_xyz » 6. Okt 2017, 12:04 Re: tlvlgraphcontrol casesensitive

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.
wp_xyz
 
Beiträge: 2253
Registriert: 8. Apr 2011, 08:01

Beitragvon arturx » 6. Okt 2017, 17:29 Re: tlvlgraphcontrol casesensitive

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;
arturx
 
Beiträge: 138
Registriert: 21. Nov 2008, 11:29
OS, Lazarus, FPC: Winux (L 1.0.6.xy FPC 2.6.z) | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon wp_xyz » 7. Okt 2017, 10:25 Re: tlvlgraphcontrol casesensitive

Erledigt.
wp_xyz
 
Beiträge: 2253
Registriert: 8. Apr 2011, 08:01

• Themenende •

Zurück zu Komponenten und Packages



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste

porpoises-institution
accuracy-worried