-
Постов
203 -
Зарегистрирован
-
Посещение
-
Победитель дней
1
Сообщения, опубликованные HyperZen
-
-
procedure Parsing(URLToPars: string; aListView: TListView); var TempText : string; HeadMatches, MsgMatches: TMatchCollection; CountPagesMatch: TMatch; i: Integer; HeadRegularExprString : string; MsgRegularExprString : string; begin try // вот это место, которое хотелось бы видеть с в потоке и с индикатором: HTMLText := IdHTTP1.Get(URLToPars); // выполняем загрузку файла из интернета; // вот это место, которое хотелось бы видеть с индикатором aListView.Items.Clear; CountPagesMatch := TRegEx.Match(HTMLText, 'max="(.*?)".*value="(.*?)"'); HeadRegularExprString := 'class="date">(.*?)<.*?class="id">(.*?)<'; MsgRegularExprString := 'class="text">(.*?)<\/div>'; HeadMatches := TRegEx.Matches(HTMLText, HeadRegularExprString, [roIgnoreCase, roMultiLine]); MsgMatches := TRegEx.Matches(HTMLText, MsgRegularExprString, [roIgnoreCase, roMultiLine]); if HeadMatches.Count = MsgMatches.Count then begin for i := 0 to HeadMatches.Count - 1 do begin TempText := HTMLClear(MsgMatches.Item.Groups[1].Value); with aListView.Items.Add do begin Data['DateText'] := HeadMatches.Item.Groups[1].Value; Data['CitateText'] := HeadMatches.Item.Groups[2].Value; Data['MainText'] := TempText; Data['imgCopy'] := il1.Bitmap(TSizeF.Create(36, 36),0); Data['imgSend'] := il1.Bitmap(TSizeF.Create(36, 36),1); end; end; end else ShowMessage('Ошибка загрузки данных!'); except On E: Exception do ShowMessage('Ошибка: ' + E.Message); end; end;
-
Вот проект, все работает корректно, пока нет события onUpdateObjects (в проекте с ним, если удалить - то все начинает работать как надо)
-
В продолжение темы http://fire-monkey.ru/topic/3307-tlistview-как-отловить-нажатие-на-картинку-в-tlistview/
При использовании автоматического подсчета высоты итема, картинки становятся не кликабельны...
Подсчет идет при помощи процедуры с этого форума, в onUpdateObjects.
-
Спасибо!
Немного перефразирую вопрос: у меня имеется процедура, в которой происходит закачка страницы с интернета. В ней же - происходит поиск нужной мне информации регулярными выражениями. Далее, в ней же - очистка от лишних символов. И заполнение TListView.
Хочу "обернуть" момент закачки страницы в TAniIndicator. Интегрирую данный код с использованием TTask (место, где идет закачка страницы). Получаю exception на регулярных выражениях (это, видимо, потому, что еще не скачана страница целиком). Как сделать так, чтобы шла закачка страницы, показывался индикатор, а моя процедура - выполнялась позже. Есть ли возможность как-то "дождаться" закачки страницы, а затем выполнять код процедуры далее?
И как вообще правильно поступать в таких случаях?
-
Спасибо! Но в примере Ярослава более "наглядно", что ли, выглядит код. Там сразу понятно где запускать анимацию индикатора, где тормозить ее. Как быть с использованием TTask и индикатора?!
-
Как правильно передать полученные значения в потоке (например строку, очень длинную строку) в главную форму приложения? Использовать глобальные переменные? Или есть другой способ?
Использую пример Ярослава: http://fire-monkey.ru/topic/30-фоновое-выполнение-операции-без-замораживания-отрисовки/?controller=topic
Вместо Sleep использую обычное скачивание страницы с интернета при помощи IdHTTP1.Get, записываю результат в какую-то переменную, затем пытаюсь использовать ее в главной форме приложения... Как все-таки правильно?
-
Используйте компонент TMultiView
-
-
18 часов назад, ra.eremeev сказал:
Добрый вечер
HyperZen, правильно ли понимаю: если снести LV, мигрированный из более ранней версии Delphi, то все Item.Add отрабатывают корректно?
У меня та же ерунда. Экспериментировать не берусь пока - слишком много нагромождено, времени много уйдет. Обошелся Вашим советом (костыль с resize), но чую, что где-нибудь "старый" LV может выкинуть неожиданный финт...
Нет. Как только я ни бился с расчетом высоты итемов компонента ListView... Ничего не помогало, пока я не понял, что все ошибки связаны с размером шрифта по-умолчанию, установленного в конкретном устройстве. Обошел эту проблему, теперь все работает корректно на любых (ЛЮБЫХ) устройствах!
Для этого при расчете высоты итема прибавляю к размеру шрифта 0.1 и все расчет ведутся корректно. А процедуру расчета взял на этом замечательном форуме.
-
Огромное спасибо!
А как различить две разные картинки? Выполнить разные действия при нажатии на соответствующую кнопку?
-
Добрый день!
Как отловить нажатие на картинку в компоненте TListView (режим - DynamicAppearance) и получить доступ (например вывести в виде сообщения) к тексту текущего Item'а?
(Berlin upd 1)
-
-
-
Что-то я туплю не работает, тыкните, пожалуйста, в ошибку
if Key = vkHardwareBack then begin if (back_pressed + 2000) > MilliSecondOfTheDay(now) then begin Close end else begin {$IFDEF ANDROID} ToastMsg('Нажмите еще раз для выхода...'); {$ENDIF} back_pressed := MilliSecondOfTheDay(now); end; end;
-
private static long back_pressed; @Override public void onBackPressed() { if (back_pressed + 2000 > System.currentTimeMillis()) { super.onBackPressed(); } else { Toast.makeText(getBaseContext(), "Нажмите еще раз для выхода", Toast.LENGTH_SHORT).show(); } back_pressed = System.currentTimeMillis(); }
Вот код для С++. Может кто его в Delphi превратить?
-
Добрый вечер!
Сабж, собственно. Как отловить двойное нажатие кнопки Back, как это сделано для выхода из программы ES проводник?!
-
Такая проблема наблюдается только на TListView и касается только цвета текста... Видимо очередной баг.
-
8 часов назад, krapotkin сказал:
если мы видим, что не обновляются те элементы, которые были вне экрана, почему бы просто не пересоздать их при смене стиля?
Как раз те элементы, которые были вне экрана - обновляются и стиль к ним применяется нормально. Не меняется цвет шрифта в видимой области TListView.
-
Приведите кто-нибудь, пожалуйста, пример, простой пример - переключения двух стилей в приложении... Желательно используя TListView в данном проекте... Уже бесит данная ситуация...
// не помогает ни: lvMain.NeedStyleLookup; lvMain.ApplyStyleLookup; // не помогает ни: lvMain.Resize; // ни: lvMain.Repaint;
Помогает только полная загрузка данных заново в этот компонент...
-
3 часа назад, Axbor сказал:
Нет, у меня Rad Studio XE 10.
А можно проект глянуть? Просто интересно как он в Берлине себя поведет...
-
В Берлине свойство Trimming работает нормально, при обрезании длинного предложения появляется три точки и в рантайме тоже... У Вас Берлин?
-
В 30.04.2015 в 14:06, ZuBy сказал:
спасибо за решение, но я уже нашел своё. пока оно меня устраивает
Можно поинтересоваться какое? Мне что-то ни NeedStyleLookup ни ApplyStyleLookup не помогает... Итемы перерисовываются некорректно...
-
Судя по первому скриншоту, у Вас все поля одинаковые по размеру, т.е. высота компонента не выставляется от количества введенного в него текста. Вам следует пересмотреть подсчет высоты компонента относительно текста, а установленное свойство Trimming никак на это не влияет...
-
7 часов назад, Axbor сказал:
Ничего полезного для меня не нашел. Мне не нужно вычислять высоту Item а. Оно у меня константное. Просто при длинных текстах появляется вышеуказанные артефакты...
Видимо, потому что текст не влезает...
Как правильно передать полученные значения в потоке в главную форму приложения?
в Потоки и распределенные вычисления
Опубликовано
Спасибо! Не хотелось мне всю процедуру заносить в синхронизацию, видимо, без этого никуда )