IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Программирование (https://www.imho.ws/forumdisplay.php?f=40)
-   -   Деление на несколько частей List Box (https://www.imho.ws/showthread.php?t=74239)

-Time- 24.11.2004 11:33

Деление на несколько частей List Box
 
Если кто делал подскажите как ето правельно делать .....

kot_ 24.11.2004 13:43

Если в ListBox'е нужно отобразить данные имеющие многоколоночную структуру, можно использовать табуляцию. Например "Колонка один \t Колонка 2". В некоторых средах разработки - в VB например - там вроде как можно использовать несколько колонок. По крайней мере комбобокс такое позволяет.
Но вообщето для этих целей лучше все же использовать компоненты специально предназначенные для такого вывода. Напр. ListView

ЕЖ 24.11.2004 14:48

Не понятно о компонента ListBox какой среды программирования идет речь? В ListBox Delphi/С++Builder есть простое свойство - Columns - количество колонок.

kot_ 24.11.2004 15:40

Цитата:

ЕЖ:
Не понятно о компонента ListBox какой среды программирования идет речь? В ListBox Delphi/С++Builder есть простое свойство - Columns - количество колонок.
Хм...я надеюсь что в данной среде разработки тобой было использовано данное свойство. Если да - то поделись. Если нет - ....

ЕЖ 24.11.2004 15:49

kot_
Хм... Не совсем понял что значит "поделись"? Как его пользовать? Так элементарно - ставиш нужное число колонок - и все строки ListBox при необходимости (когда не помещаются в первую колонку) размещаются в следующих. Если и в них не помещается, тогда уже полоса прокрутки идет.

Кроме того, опять же не понятно, что нужно -Time- - делить ли по колонкам и как делить? Или вообще нечто другое. Может проще просто другой компонент подыскать.

kot_ 24.11.2004 16:24

ЕЖ
Ну может он конечно это имел ввиду - но с другой стороны - данное свойство позволяет компактно разместить LB но причем здесь в таком случае деление? Сам то LB в данном случае не делится - :) Я имею ввиду что отображение вида:
№ нАЗВАНИЕ Количество
ты получить не сможешь.

-Time- 24.11.2004 16:30

ухххх )))

си ++ (нет студия)
проблема заключаеться в следуещем

есть :
время, название файла , и имя
нужно ето всё разместить в отдельные колонки в лист боксе

если можно киньте пример ...

Спасибо

kot_ 24.11.2004 18:26

Ну в таком случае используй объединение строк:
Код:

LPSTR        lpFileName, lpFileSize;
....

lstrcat( lpFileName, "\t" );
lstrcat( lpFileName, lpFileSize );

Получишь двухколоночную строку.

-Time- 24.11.2004 18:38

Тоисть у меня есть вот ето

Код:

void CDirMonDlg::FillListBox(bool lNeu)
{
        HICON hIcon;
        mList.Fil
    mList.ResetContent();
        if (lNeu)
        {
                hIcon = AfxGetApp()->LoadIcon(IDI_ICON1);
                SetWindowText("Neue Abrufe - Seeburger");
       
                char str[MAX_PATH];
                mDirName.GetLine(0,str,MAX_PATH);
                CFileFind ff;
//                ff.GetLastError();
                //ff.Close();
                bool res;
                if(ff.FindFile(CString(str)+"\\*.txt")!=0)
                {
                do
                {
                  res = ff.FindNextFile();
          CTime d;
                  ff.GetCreationTime(d);
                  CString strName = d.Format(" %c  - ") + ff.GetFileTitle();
                  mList.AddString(strName);
        }while(res);
                }
                ff.Close();
        }
        else
        {
                hIcon = AfxGetApp()->LoadIcon(IDI_ICON2);
                SetWindowText("Seeburger");       
                //mList.ResetContent();
        }

        if (hIcon!=NULL)
                SetIcon(hIcon,false);
 }

void CDirMonDlg::OnClose()
{
        // TODO: Add your message handler code here and/or call default
        if(!ladmin)
        {
        if (g_bGoOn)
        {
                //MessageBox("..........","Achtung" , MB_OK);
                this->ShowWindow(SW_MINIMIZE);
        }
        }
        else
        {
        this->OnBnClickedButton2();
        CDialog::OnClose();
        }
}

куда мне его тут присобачить ?

kot_ 24.11.2004 21:26

Цитата:

-Time-:
if(ff.FindFile(CString(str)+"\\*.txt")!=0) { do { res = ff.FindNextFile(); CTime d; ff.GetCreationTime(d);

//Ну например вот так
CString strName = d.Format(" %c - ") +"\t" +ff.GetFileTitle(); mList.AddString(strName); }while(res); } ff.Close(); }
В результате у тебя будет две ровных колонки.
Но чесное слово, помоему ты зря мучаешься - СListView для тебя будет, мне кажется, оптимальным вариантом.

-Time- 29.11.2004 11:41

kot_
чесно говоря я непонял где имено ты зделал изменения ... \t[U]
от ето го мне кажеться ничего не измениться ...


у меня есть трип параметра какие выводяться в лист боксе и вот их я и хочу выводить в разных колонках

kot_ 29.11.2004 13:57

Цитата:

-Time-:
чесно говоря я непонял где имено ты зделал изменения ... \t[U]
от ето го мне кажеться ничего не измениться ...
Управляющий символ \t и есть табуляция - равномерный отступ. По другому я допустим не знаю как решить эту проблему в ВС++В например. Если твоя задача - сохранить тип параметра - то может тебе имеет смысл использовать свойство типа Data или Object - если в VC++ это поддерживается? Допустим в ВС++В я делаю это так:
Код:

ListBox->Items->AddObject(ff.GetFileTitle(),(TObject*)(new AnsiString(TimeToStr(d))));
Но у борланда класс ListBox'а во первых, реализован немного не так как у мелкомягких, во вторых - да вобщем достаточно и первого.
Если же для тебя важен именно табулированый вывод - то у тебя есть два выбора - первый тот который я предложил - с использованием символа табуляции. Второй использование инструментов которые предназначенны для этих целей - например ListView. ИМХО - найболее просто и надежно. И нет нужды в извращениях с символами табуляции и пр. Есть еще вариант третий - самому создать нужный тебе компонет. :)

-Time- 30.11.2004 11:40

Всё таки не получаеться так как я хочу (
зделал вот так
Цитата:

CString strName = d.Format(" %c - ")+ "/t" + ff.GetFileTitle();
время выводить нармально но вот файл титле ну никак зараз выводить не хочет ((((

kot_ 30.11.2004 12:12

Цитата:

Сообщение от -Time-
Всё таки не получаеться так как я хочу (
зделал вот так

время выводить нармально но вот файл титле ну никак зараз выводить не хочет ((((

Ну во первых - вроде всегда было - \t - а не -/t - ну тут ка говорится - хозяин барин. А во вторых, попробуй просто вывести имя файла - без коннектации. Если это отработает - тогда может тип возвращаемого значения нужно явно приводить к типу CString - или использовать функции коннектации для с-строк.

rkorchagin 09.12.2004 18:30

на http://www.codeproject.com/
куча таких листбоксов - вот один из них:
http://www.codeproject.com/cs/miscctrl/aa_listview.asp

-Time- 09.12.2004 18:40

спасибо проблема уже давно решена )))

тему можно в принцепе закрывтаь


Часовой пояс GMT +4, время: 05:09.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.