Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Delphi (все версии) - часть 3

Автор: SERGE_BLIZNUK
Дата сообщения: 18.10.2007 06:31
Maks150988
если вы про RxLibrary - не парьтесь - она уже много-много лет не развивается! (ребята, которые её делали, давно сделали себе имя и уехали в Штаты)...

всё (подчёркиваю - ВСЁ), что в ней было, вошло в JEDI (JVCL/JCL)
Автор: relictus
Дата сообщения: 18.10.2007 07:39
Maks150988
А разве *.pas - это не исходники?
В любом случае, больше у меня все равно ничего нет...
Автор: vserd
Дата сообщения: 18.10.2007 08:33
ymg2000

Цитата:
Если владелец по каким-то причинам Application, а не родительская форма - то
Цитата:Application.CreateForm(Tfrm_unit2, Frm_unit2);

тогда Frm_unit2:=Tfrm_unit2.create(Application);
Application.CreateForm имеет смысл только если не задана главная форма приложения.
Автор: relictus
Дата сообщения: 18.10.2007 09:15
А вот кто мне подскажет по работе IDE CG RAD Studio 2007:
как/что/где надо включить в настройках, чтобы при запуске IDE авто-открывался последний проект, с запомненной текущей строкой редактирования и с fold-нутыми методами/и пр. где было, т.е. так, как было при последнем выходе из IDE?
Я это к тому, что в BDS 2006 у меня все это работало по дефолту (насколько я помню), а тут приходится каждый раз при открытии последнего проекта, ЗАНОВО фолдить/анфолдить и искать место в коде, где же я остановился вчера?
Автор: Maks150988
Дата сообщения: 18.10.2007 10:18
SERGE_BLIZNUK
Нет, это другие модули.
relictus
Ммм... Ну все-таки удобнее когда есть файлы проекта и еще всякое... А тут надо копать... ну ладно и на том спасибо буду разбирать...

Может все-таки есть у кого-нибудь эта библиотечка?
Автор: ymg2000
Дата сообщения: 18.10.2007 11:52
vserd
Да, Application.CreateForm чаще всего используется при создании главной формы.
Но метод можно использовать при создании любой формы. Привожу выдержку из Тейксейра и Пачеко [more]...метод может быть вызван вами где угодно в вашем коде при создании формы, не вошедших в список автосоздаваемых. Этот вызов ничем не отличается от Create() самой формы, за исключением, что CreateForm() проверяет, не равно ли свойство MainForm nil, и если это так, то назначает свойству Application.MainForm вновь создаваемую форму.[/more] Хотя скажу, что сам я так никогда не писал (сейчас отошел от активного программирования). Здесь вопрос не в том, корректно или не корректно, а в стиле программирования. Ты предлагаешь более профессиональный стиль, согласен.
Автор: yuish
Дата сообщения: 18.10.2007 13:20
Я смотрю, на счет примера, что я дал, и где использовал Application.CreateForm развилось бурное обсуждение. Поясняю - я просто привел человеку пример кода, который использую. Данный код у меня действительно запускается до создания главной формы (из даиа модуля) в форме с запросом логина и пароля.
Автор: informesrab
Дата сообщения: 18.10.2007 14:24
Написал в Delphi процедуру которая ожидает несколько секунд, а потом выводит изображение.

var a1,a2:integer;
begin
a2:=1;
for a1:=1 to 5 do
begin
sllep(4500);
a2:=a2+1;
edit1.text=inttostr(a2);
form1.refresh;
end;
end

Работает она нормально, но если сернуть окно а потом развернуть то значение в edit1 не изменяеться и процедура доходит до конца, если не сворачивать то все работает нормально. Есть ли другие функции для обновления изображения.
Автор: RomanTim
Дата сообщения: 18.10.2007 14:50
informesrab
Кинь на форму TTimer и в его OnTimer пиши в едит новое значение
Автор: Aladdinych
Дата сообщения: 18.10.2007 15:57
Подскажите как из приложения, написанного на Delphi определить почтовую программу по умолчанию

Добавлено:
Подскажите как из приложении на Delphi создать почтовое сообщение с прикрепленным файлом используя почтовую программу по умолчанию
Автор: DmitryKz
Дата сообщения: 18.10.2007 19:23
Подскажите - надо удалить выделенный элемент (или несколько элементов) в ListView. Написал такой код:

Цитата:
procedure TfrmNewSet.CrNSRmvDictExecute(Sender: TObject);
var
i:integer;
begin
for i:=0 to ListDictsAttach.Items.Count-1 do
if ListDictsAttach.Items.Item[i].Selected then ListDictsAttach.Items[i].Delete
end;

Компилируется нормально, но при исполнении выкидывает с предложением запустить отладчик. И еще такой вопрос: при выполнении процедуры Delete все элементы ListView перестроятся автоматически?

Добавлено:
Так, заметил, что вылета не происходит с таким кодом
if ListDictsAttach.Items[i].Selected then ListDictsAttach.Items[i].Delete
но только если удаляется последний элемент списка. При удалении из середины списка - вылет. Значит элементы не перестраиваются. Т. е. надо писать процедуру перемещения элементов?

Добавлено:
Ребята, кажись понял - надо было цикл не с нуля начинать. Так ошибок нет - в общем, я прав или нет?
Автор: ymg2000
Дата сообщения: 18.10.2007 19:58
DmitryKz
Так, по старой памяти:
Попробуй цикл
for i:= ListDictsAttach.Items.Count-1 downto 0 do
................
А при твоей конструкции цикла ты вообще-то должен получать Exception
о выходе за пределы диапазона.
Автор: DmitryKz
Дата сообщения: 18.10.2007 21:14
ymg2000
Да, я уже разобрался с этим.
toALL
А вот такой вопрос. Написал процедуру сдвига элементов ListView вверх и вниз. Проблема в том, что при нажатии кнопки, фокус с ListView теряется и соответственно теряется визуально выделение элементов. Нельзя ли как-нить сделать, чтобы выделение было видимо всегда и перемещалось вслед за перемещаемыми элементами?
Автор: OdesitVadim
Дата сообщения: 18.10.2007 23:04
всегда видимое - hideselection = false
что бы выделение оставалось правильным - корректируй самостоятельно
Автор: relictus
Дата сообщения: 19.10.2007 07:45
DmitryKz
ymg2000
Вообще-то, правильно удаление делать так:

Код: i := 0;
while i < ListDictsAttach.Items.Count do
if ListDictsAttach.Items.Item[i].Selected then ListDictsAttach.Items[i].Delete
Автор: vserd
Дата сообщения: 19.10.2007 08:10
informesrab
form1.refresh;
Application.ProcessMessages;
end;
Автор: DmitryKz
Дата сообщения: 19.10.2007 08:43
Кто-нибудь видел готовый код для перемещения элементов ListView? Я имею в виду, что перемещение осуществляется как обмен соседних значений - с этим сложности нет. Проблема в том, что если выделены, скажем, элементы 1, 3, 4, то при перемещении она становятся 0, 2, 3, а при очередном перемещении что должно происходить? Ведь первый элемент достиг начала списка. Выходить из процедуры, или продолжать двигать второй и третий элементы? Но тогда получается надо устанавливать дополнительные проверки и вводить новые переменные, и код получается, как мне кажется, утяжеленным. Посоветуйте что-нить или скиньте код - я у себя в примерах ничего не нашел.
Автор: ymg2000
Дата сообщения: 19.10.2007 08:50
relictus
Можно удаление (даже элегантнее) делать через While, но тогда нужно не забывать инкрементировать переменную управления циклом:
i := 0;
while i < ListDictsAttach.Items.Count do
if ListDictsAttach.Items.Item[i].Selected then ListDictsAttach.Items[i].Delete
else inc(i);
По твоему вопросу ничего, Студию только установил недавно.
Совет DmitryKz
При удалении/вставке эл-тов списка в ListView (и в многих др. контролах со списками) обрамляй тело цикла BeginUpdate и EndUpdate, т.е. схематично так:
try
ListView.Items.BeginUpdate;
тело цикла
............................
finally
ListView.Items.EndUpdate;
end;
В этом случае перерисовка произойдет после отработки всего цикла, а на многократно после удалении/вставки элемента.
Автор: informesrab
Дата сообщения: 19.10.2007 11:15
С вопросом о обновлении я уже разобрался, спасибо за помощь, однако возник другой вопрос. Нужно получать страницу которую динамически формирует сервер. Взял стандартный пример HTTP из Delphi для получения страницы, пытался зайти на тестовую страницу по порту 80, в результате загружается совсем другая страница из другого домена. Повторил попытку убив Cookie, результат неизменился. Из Explorera моя страничка загружается нормально. Что я неправильно делаю, или может есть другие примеры. У меня стоит Delphi 6.
Автор: DmitryKz
Дата сообщения: 19.10.2007 14:01
Скажите, вот в TListView существует событие OnSelectItem. А как быть, если нужен обратный эффект - когда выделение теряется при щелчке вне списка элементов в ListView. Например, я хочу сделать недоступными определенные кнопки на форме, если ни один элемент не выделен.
Автор: skinash
Дата сообщения: 19.10.2007 14:17

Цитата:
А вот кто мне подскажет по работе IDE CG RAD Studio 2007:
как/что/где надо включить в настройках, чтобы при запуске IDE авто-открывался последний проект, с запомненной текущей строкой редактирования и с fold-нутыми методами/и пр. где было, т.е. так, как было при последнем выходе из IDE?
Я это к тому, что в BDS 2006 у меня все это работало по дефолту (насколько я помню), а тут приходится каждый раз при открытии последнего проекта, ЗАНОВО фолдить/анфолдить и искать место в коде, где же я остановился вчера?

Tools->Options->Environment Options->Autosave Options поставь галочки Editor Files и Project Desktop

Добавлено:
DmitryKz
OnExit
Автор: DmitryKz
Дата сообщения: 19.10.2007 14:29
skinash

Цитата:
OnExit

Это событие потери фокуса, а не выделения. При щелчке вне списка выделение теряется, но фокус на каком-либо элементе остается.
Автор: DmitryKz
Дата сообщения: 19.10.2007 17:41
Все просто оказалось - надо обработать событие OnClick и проверить свойство Selected ListView.
Автор: OdesitVadim
Дата сообщения: 20.10.2007 13:25
informesrab
Если бы ссылку на страничку привели - было бы понятней. Вполне возможно, что сервер проверяет UserAgent и пытается выдать "правильную страничку", что бы в разных броузерах они выглядели одинаково. А вы скорее всего используете idHttp, который выдаёт свой UserAgent и сервер "теряется"
замечу, что некоторые серверы с "трепетом" относятся к определённым броузерам. например есть сайт, который для FireFox выдаёт "смени броузер".
Автор: OOD
Дата сообщения: 21.10.2007 11:06
можно ли на ShellListView добавить фоновую картинку?
или же цвет фона сделать прозрачным
Автор: informesrab
Дата сообщения: 22.10.2007 10:19
OdesitVadim
Название страницы www.informes.uz.ua . Пробовал через все демонстрационные примеры, результат неизменный.
Автор: yuish
Дата сообщения: 22.10.2007 11:47
Aladdinych
смотри в сторону JvMail из jedi. оно и приложение определит и письмо создаст. Правда с прикрепленным файлом я не пробовал, но судя по всему наверное должно и это делать (там есть свойство attachment).
Автор: Dead Adriano
Дата сообщения: 22.10.2007 14:33
Ни с того ни с его появился прикол: перестали работать Breakpoint'ы. То есть абсолютно любая точка останова в абсолютно любом месте кода не активна в рантайме.
В настройки собственно Delphi (компилятор и т.д.) не лазил сто лет.
Никто случайно с подобными полтергейстами не сталкивался?


Добавлено:
Блин, я ламер.
Была включена оптимизация.
И все-таки странно: при включенной оптимизации невозможно бало поставить НИ ОДНОГО брэйкпойнта, ни в одном проекте. Че-то она чересчур оптимальная
Автор: relictus
Дата сообщения: 22.10.2007 14:48
Вопрос по Clever Internet Suiite. Если http-клиент clHttp получает ответ сервера с ошибочным статус-кодом (403, 404 и т.п.), то он вываливает сообщение типа "HTTP 1.1 403 Forbidden". Как это можно пресечь?
Разобрался сам... заюзал обработку эксепшенов...
Автор: Dead Adriano
Дата сообщения: 22.10.2007 14:51
Блин.
Отключил оптимизацию, точки останова заработали. Зато нельзя watch'ить переменные. На все подряд делфи говорит "Inaccessible value".
Rrrrrrrrrrrrrrrrrrr

Добавлено:
Разобрался.
Local symbols надо было включить. Остается только выяснить, какая скотина их выключила, но с этим, наверное, здесь не помогут
Извиняюсь за флуд.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: 1С: Конвертация данных 2.0


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.