Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 6

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Продолжение темы Вопросы по Delphi (до версии 2009) - часть 5

Познаем сами, помогаем другим...
Обсуждаем вопросы, не связанные с юникоидными версиями Delphi - для этого есть соответствующая тема (см. ссылки ниже).


 
Правила топика:
    Прежде чем спрашивать:
  1. Желательно изучить вопрос, попытаться найти ответ в прилагаемых мануалах, хелпах и анализируя исходники.
  2. Выполнить поиск по топику (открыть "Версия для печати" и поискать ответ там).
  3. Применить фильтр по разделу "Прикладное программирование". Ответы на многие старые вопросы могли быть даны в отдельных темах.
  4. Продумайте вопрос. На поверхностные вопросы вы получите поверхностные ответы, или вообще ответов не получите.
  5. Желательно указывать версии используемого компилятора и операционной системы.
    Прежде чем отвечать:
  1. Если не можете помочь, не мешайте.
  2. Если уж вы отвечаете на вопрос, давайте ответ по сути.
  3. Если вы не уверены, так и говорите! Ошибочный, но авторитетно звучащий ответ хуже, чем отсутствие ответа.
  4. Задавайте дополнительные вопросы, чтобы получить больше информации.
  • Отсутствие ответа не равносильно игнорированию - иногда участники форума просто не знают ответ. Повторная посылка вопроса не приветствуется. Посты типа "неужели никто не знает ответа..." или "может мне все-таки кто-нибудь ответит" недопустимы.  
  • Все большие куски кода (более 5 строк) оформляем в тег [morе] дабы уменьшить размер поста. FAQ по тегу [morе].


    Некоторые "родственные" топики:
     
  • Вопросы по Delphi (версии 2009-2010 Weaver)
  • Вопросы по компонентам для Delphi, C++ Builder
  • Использование DevExpress
  • Вопросы по Ehlib
  • Компоненты и утилиты для Delphi/BCB/FreePascal/Lazarus - только Open Source
  • Коммерческие компоненты и утилиты для Delphi/BCB
  • кабак программистов :)
     
    См. также: Некоторые полезные ресурсы о Delphi
     
    И старайтесь, чтобы ваш код не попал сюда :)

  • Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 05:13 19-05-2010 | Исправлено: akaGM, 02:33 15-07-2020
    log1stable



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    В общем, пытаюсь сделать свое дерево файлов на label'ах. Смог пока что сделать следующее: найти диски (на которые возможна установка, привязать процедуры наведения, снятия, клика(по которому создается дерево подпапок данной папки)). Нужно сделать так, чтобы в случае, когда уже раскрыта папка, при раскрытии папки этого же уровня удалялись подпапки предыдущей (на изображении более понятно выражено). У меня уже мозг кипит, я не знаю, как именно РЕАЛИЗОВАТЬ это. Авось, у кого-нибудь из вас получится.  
    Код

    Всего записей: 146 | Зарегистр. 15-07-2011 | Отправлено: 04:59 12-12-2013
    ulyss1977



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    log1stable

    Цитата:
    на изображении более понятно выражено

    Изображения не видно, к сожалению

    Всего записей: 30 | Зарегистр. 19-07-2005 | Отправлено: 06:22 12-12-2013
    log1stable



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    ulyss1977,
     

    Всего записей: 146 | Зарегистр. 15-07-2011 | Отправлено: 06:56 12-12-2013
    Kmich



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    log1stable
    Вам необходимо  удалить label текущего уровня у которых left =j*10 а процедурке TreeLabelClick
    типа так:  
     
    begin  
       for i:=1 to Length(TLabel(Sender).Hint) do  
         begin  
           if TLabel(Sender).Hint[i]='\' then j:=j+1;  
         end;  
     
     CountDestroy:=0;
     for I := 0 to WizardForm.ComponentCount - 1 do
     if (WizardForm.Components[I] as TLabel).Left=j*10 then
       begin
         (WizardForm.Components[I] as TLabel).Destroy;
         Inc(CountDestroy);
       end;
    Numbers:=Number-CountDestroy;
    а дальше ваш код процедуры TreeLabelClick.
     
    А почему используете Label, а не например TreeView.

    Всего записей: 192 | Зарегистр. 21-01-2005 | Отправлено: 09:44 12-12-2013 | Исправлено: Kmich, 09:49 12-12-2013
    exteris

    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

    Цитата:
    В общем, пытаюсь сделать свое дерево файлов на label'ах.

    Зачем на лейблах!?

    Всего записей: 382 | Зарегистр. 14-04-2003 | Отправлено: 11:30 12-12-2013
    Alexzzy

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Тоже интересно зачем. А так, лучше для каждого уровня помещать лэйблы в контейнер (TPanel, например)...

    Всего записей: 1474 | Зарегистр. 10-07-2013 | Отправлено: 12:35 12-12-2013
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    log1stable
    Пометьте как-нибудь свои лебелы, чтобы каждый следующий уровень отличался от предыдущего. Хоть теми же тагами.

    Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 12:46 12-12-2013
    ant0ni02004

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    log1stable
    вот тоже интересно, почему дерево папок на label сделано...
    здесь бы было более уместно TreeView или даже Open/Save Dialog с соотв. настройками (path must exist)

    Всего записей: 442 | Зарегистр. 26-10-2004 | Отправлено: 13:50 12-12-2013
    log1stable



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Потому что я делаю это не в Делфи, а в Inno Setup. А во-вторых, TreeView, как и OpenDialog, просто не подходит под общий стиль формы, которую я нарисовал.

    Всего записей: 146 | Зарегистр. 15-07-2011 | Отправлено: 16:39 12-12-2013 | Исправлено: log1stable, 16:40 12-12-2013
    Aleksandr N

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    del
    Проблему решил...

    Всего записей: 1665 | Зарегистр. 25-02-2008 | Отправлено: 10:08 23-12-2013 | Исправлено: Aleksandr N, 19:10 24-12-2013
    Maks150988



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    под вечер мозги кипят. вот есть число 14123,56 и надо отобразить его с пробелом, отделив тысячу от рублей. не хочу велосипед изобретать. работаю без vcl, там есть в функциях формата такая фигня, а как тут. может есть готовое решение? чет в поиске забиваю и не могу найти нужное

    Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 22:18 12-01-2014
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maks150988
    VCL использует FormatFloat.

    Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 13:12 13-01-2014
    ShIvADeSt



    Moderator
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maks150988

    Цитата:
    под вечер мозги кипят. вот есть число 14123,56 и надо отобразить его с пробелом, отделив тысячу от рублей. не хочу велосипед изобретать. работаю без vcl, там есть в функциях формата такая фигня, а как тут.

    А чем не подходит функция Insert и проверка на длину строки? Делаем функцию, в которой от конца к началу вставляем пробелы, если длина строки подходит под условие, итпа
    if length(s)>6 // 3 символа на дробную часть и 3 символа на сотни
    then insert(s, ' ', 7)
    if length(s)>10 // 3 символа на дробную часть и 3 символа на сотни
    then insert(s, ' ', 11)
    и тд до триллионов например.
    Суть думаю понятна.

    ----------
    И создал Бог женщину... Существо получилось злобное, но забавное...

    Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 02:01 15-01-2014
    Vitus_Bering



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Приходит строка с сервера, как определить имеет ли она кодировку UTF-8?

    Всего записей: 936 | Зарегистр. 30-09-2005 | Отправлено: 08:49 07-03-2014
    exteris

    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

    Цитата:
    Приходит строка с сервера, как определить имеет ли она кодировку UTF-8?

    В общем случае никак. Есть функция DetectUTF8Encoding, но она не гарантирует точность определения.

    Всего записей: 382 | Зарегистр. 14-04-2003 | Отправлено: 09:51 07-03-2014
    Vitus_Bering



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    exteris
    DetectUTF8Encoding в Delphi 7 есть эта функция?

    Всего записей: 936 | Зарегистр. 30-09-2005 | Отправлено: 10:32 07-03-2014
    exteris

    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Скорее всего нет.

    Всего записей: 382 | Зарегистр. 14-04-2003 | Отправлено: 11:37 07-03-2014
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    exteris
    По-моему можно использовать какое то АПИ от ИЕ, которое детектит кодировки. Но точность там далеко не 100%.

    Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 13:59 07-03-2014
    Vitus_Bering



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    не предполагал, что это может быть проблемно...

    Всего записей: 936 | Зарегистр. 30-09-2005 | Отправлено: 16:19 07-03-2014
    ant0ni02004

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Vitus_Bering
    на 100% продетектить, конечно, невозможно. тот же ИЕ определяет не по всей строке, а по первым скольки-то там символам (иначе тормоза начнутся). и даже скан всей строки 100% не даст

    Всего записей: 442 | Зарегистр. 26-10-2004 | Отправлено: 00:14 08-03-2014
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 6


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru