Tnt&Std ListBox - dodawanie HScroll

0

poniższa procedura aktywuje poziomy pasek przewijania gdy
klasa TAHCustomListBox jest pochodną TListBox. Gdy jednak uczyniłem ją 'dzieckiem' TTntListBox, wszystko przestało działać. (oczywiście ta procedura tylko inicjuje scrollbara, mniejsza odetale, myślę że jak coś nie działa to właśnie to)

procedure TAHCustomListBox.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.Style := Params.Style or ws_HScroll;
end;

ewentualnie to :/

procedure TAHCustomListBox.SetScrollLength(S: String);
var
  Extent: Word;
begin
  Extent := Canvas.TextWidth(S)+40;
  if Extent > FLongestString then
  begin
    FLongestString := Extent;
    Perform(lb_SetHorizontalExtent, Extent, 0);
  end;
end;

ma ktoś pomysł co jest nie tak ? a może ktoś ma swoje działające źródła dla TTntListBox ?
aha, Tnt jest najświerzsze, 3.0...
dzięki z góry za pomoc...

0

Sam tego szukałem, bo było mi bardzo potrzebne, dlatego podziele się zdobytą wiedzą :) [soczek] A więc, w ListBox, CheckListBox i prawdopodobnie innym pochodnym od TListBox można tak:

ListBox1.ScrollWidth := 1000;

lub tak

CheckListBox1.Items.Add('długi tekst.....');
CheckListBox1.ScrollWidth := CheckListBox1.ClientWidth + 90;

lub można też tak (najlepsze)

private
   procedure AdjustCheckListBox;

procedure TForm1.AdjustCheckListBox;
var
        i, nMaxWidth, nItemWidth : integer;
begin
        nMaxWidth := CheckListBox1.ClientWidth;
        for i := 0 to CheckListBox1.Items.Count - 1 do
        begin
                nItemWidth := Length(CheckListBox1.Items[i]) * 5 + 90;
                if (nItemWidth > nMaxWidth) then
                        nMaxWidth := nItemWidth;
        end;
        if (nMaxWidth > CheckListBox1.ClientWidth) then
                CheckListBox1.ScrollWidth := nMaxWidth;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
CheckListBox1.Items.Add('długi tekst...');
AdjustCheckListBox;
end;
0

rozumiem że zostałem dobrze zrozumiany i ta metoda działa również dla komponentów [b]TNT[/b] ? bo tak na oko mi się nie wydaje. ale jeśli się mylę to bardzo przepraszam ;(

1 użytkowników online, w tym zalogowanych: 0, gości: 1