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

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

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

ShIvADeSt (28-06-2009 02:10): Продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=10477  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

ShIvADeSt



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

Цитата:
1) Необходимо чтобы появлялось всплывающее меню по нажатии правой кнопки мыши на листбоксе. Код для отображения меню такой:

http://www.cyberguru.ru/programming/win32/win32-menu-page15.html тут пример, как я и думал надо просто вернуть TRUE если показываешь и FALSE если нет.
 
Для градиента попробуй смотреть в сторону регионов, создай пару регионов, потом скомбинируй их. Либо как вариант делай след образом - ты точно знаешь внутри какой области тебе надо делать градиентную заливку. Определи верхнюю и нижнюю границу для линии градиента через GetPixel (вроде так), как только получишь цвет границы внутри которой надо заливать останавливаешься и рисуешь линию на 1 пиксель ниже верха и на 1 пиксель выше низа. Таким образом(чтобы ускорить работаешь только на области закругления, а дальше просто рисуешь.  
Если не понятно объяснил - то напиши, попробую на примере показать.

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

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 03:49 15-11-2008
Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ShIvADeSt
Спасибо. =) Результат FALSE помог.
Да, лучше покажите на примере, а то так сразу непонятно, тем более я никогда не комбинировал регионы вообще.

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 14:34 15-11-2008
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maks150988
погуглил немного, так как сам примерно представлял, нашел тут http://www.eggheadcafe.com/software/aspnet/30788108/fill-gradient-round-rect.aspx все что надо SelectClipRgn. Вот рабочий код
Подробнее...

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

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 14:41 16-11-2008
DmitryKz

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не подскажете, почему может быть недоступным свойство Terminated у потока?

Всего записей: 3144 | Зарегистр. 29-09-2005 | Отправлено: 19:18 17-11-2008
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DmitryKz
Может потому, что когда это свойство true, то потока уже нет? Как проверяешь для начала?

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

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 02:17 18-11-2008
DmitryKz

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не знаю, глюк или не глюк, но когда код потока находился в отдельном юните, это свойство было недоступным, даже если просто написать Terminated получишь сообщение о не определенном идентификаторе. Перенес код пототка в юнит формы, теперь Terminated доступно

Всего записей: 3144 | Зарегистр. 29-09-2005 | Отправлено: 11:01 18-11-2008
OXDBA

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DmitryKz
  TThread = class
...
protected
    property Terminated: Boolean read FTerminated;
...

Всего записей: 426 | Зарегистр. 19-01-2005 | Отправлено: 18:21 18-11-2008
I_Win

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопросец такой, как перевести строку в число. В строку изначально могут быть введены только цифры + символ "."

Всего записей: 34 | Зарегистр. 27-04-2007 | Отправлено: 04:13 19-11-2008
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
I_Win
А с каких пор строка вида 5+5 является числом? Это, извините, выражение. Тут два варианта либо парсить из нее числа и делать операции, либо найти компонент, который умеет вычислять значение выражения.

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

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 05:13 19-11-2008
I_Win

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ShIvADeSt
+ использовался вместо "и". То есть в строке только цифры и символ "."
 
 
В принципе уже сам разобрался с вопросом.

Всего записей: 34 | Зарегистр. 27-04-2007 | Отправлено: 05:28 19-11-2008
DmitryKz

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, пожалуйста, что за глюк такой: есть форма настроек, при старте программы (в событии OnShow главной формы) из реестра и файла настроек загружаются сами настройки (т.е. когда, скажем, форма frmOptions еще невидима). Но есть один  Edit, в котором всегда появляется значение, прописанное еще в дизайне. Хотя, когда пошагово проходишь код, значение из реестра туда прописывается. Почему же возвращается значение из дизайна??? Ради интереса прописал код заполнения Edit в событие OnShow формы опций - понятно, что все работает. Но все-то остальные настройки в кантролы и без этого нормально загружаются!

Всего записей: 3144 | Зарегистр. 29-09-2005 | Отправлено: 18:31 23-11-2008 | Исправлено: DmitryKz, 18:35 23-11-2008
RSoFT1978

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DmitryKz
Трудно сказать что-то определённое, не видя кода. Надо смотреть, чем именно этот Edit отличается от остальных. Попробуй поместить код в OnCreate формы настроек или вызывать, напр., Delay(10) перед (или после) заполнения каждого Editа.
Ps. Скорее всего, это связано с оптимизацией кода компилятором и использованием в программе потоков.

Всего записей: 34 | Зарегистр. 19-05-2007 | Отправлено: 20:42 23-11-2008 | Исправлено: RSoFT1978, 20:44 23-11-2008
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DmitryKz
Каким образом создаешь формы? Динамически (при обращении) или статически (раз создал и все)? В любом случае, у тебя где то переопределяется это значение. Внимательно изучи весь код на предмет изменения свойств Едита. Судя по всему кстати у тебя статически создаются окна - это очень плохо, так как при большом количестве окон программа будет кушать больше памяти чем необходимо. Убери из свойств проекта все вызовы форм, кроме главной и создавай формы в тот момент. когда это необходимо (при нужных событиях) - это позволит тебе нормально отслеживать свойства форм и уменьшит потребляемую память в разы - у меня был проект с большой базой данных, там в дочерних формах грузились нехилые объемы данных. В результате прога хапала под 100 метров рамы и долго грузилась, так как в контролы загружались записи. Сделал динамическое создание - меньше 10 метров в памяти, все грузится быстро.

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

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 02:12 24-11-2008
diodio



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Друзья! Подскажите, пожалуйста.
Есть текстовый файл и таблица, в которой нужно заменить данные в одном столбце данными из текстового файла.
Поиск по тхт я организовал, там все просто.
 
Формат бд - старый dbase III, .dbf
 
Cуть в том, что в таблице более 500 000 записей, работает все оч. медленно (одна запись=1 сек).
 
Подскажите, пожалуйста, как организовать быструю замену?
 
Пробовал так
 

Код:
If Table1.Active = false then Table1.Active := true;
Table1.First;
     Application.ProcessMessages;
     if Table1.Locate('FIO;KOD_DN',VarArrayOf([fio,684]),[loCaseInsensitive]) then
      begin
       inc(z);
       JvLabel4.Caption := IntToStr(z);
       Table1.Edit;
       Table1.fieldbyname('FIO').AsString := lichb;
       Table1.Post;
     end;
 
 
 
If Table1.Active = true then Table1.Active := false;

 
и так  

Код:
 
   Query1.SQL.Clear;
   Query1.SQL.Add('UPDATE p100 SET p100."FIO"=:lichb  WHERE p100."FIO"=:fio AND KOD_DN=684');
   Query1.ParamByName('fio').Asstring := fio;
   Query1.ParamByName('lichb').Asstring := lichb;
   Query1.ExecSQL;
   Query1.Close;
   z:=z+1;
end;  
 
 
- тормоза страшные

Всего записей: 111 | Зарегистр. 26-12-2006 | Отправлено: 12:24 25-11-2008 | Исправлено: diodio, 14:27 25-11-2008
Kr_Alex



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Раньше был простой веб-сервис, создавал proxy class и вызывал методы сервиса без особых проблем, то же самое через https не работает, выдается сообщение a certificate is required to complete authentication. Что с этим делать?

Всего записей: 120 | Зарегистр. 16-07-2004 | Отправлено: 12:27 25-11-2008
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
diodio
Проверь не привязан ли грид к таблице, если привязан - то вот самый главный тормоз. Далее - есть ли индексы у таблицы?
Попробуй содержимое файла кинуть в другую таблицу и выполнить запрос примерно такой
UPDATE P100 set p100.FIO=(select lichb from TempTable where p100.FIO=TempTable.FIO) where p100.KOD_DN=684

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

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 14:56 25-11-2008
qBarmaleyq

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
diodio
Как у же выше посоветовали если у тебя подключен Grid какой либо, то это будет дольше работать чем без него.
Попробуй перекинуть DBF файл в любую другую СУБД и там уже всё это сделать. Можно и не в СУБД, например ACCESS. А затем обратно сохранишь. Если тебе только всё это не нужно делать постоянно.
 
 

Всего записей: 120 | Зарегистр. 13-10-2007 | Отправлено: 15:14 25-11-2008
vav79



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
помогите плиз.....
все здесь... http://forum.ru-board.com/topic.cgi?forum=33&topic=9944#1
вознагр. гарантирую. в разумных пределах  

Всего записей: 78 | Зарегистр. 19-01-2007 | Отправлено: 19:24 26-11-2008
Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Такой вопрос. необходимо сохранять файл на диск посредством CreateFile. Впринципе меня устраивает эта функция вместо всяких AssignFile, Rewrite и т.д. Тем более вроде не надо париться и обрабатывать дурацкие исключения вслучае когда например директория не существует или сам диск куда сохраняем файл. Тут сразу нет и нет и программа не вываливается с ошибками. Но, вопрос вот в чем. При тестировании программы выяснилось что если например указать сохранить файл в привод, то в Windows XP включается этот бестолковый Мастер записи комапктов и предлагает записать этот отложенный файл. Создаю так CreateFileW(PWideChar(szFilePath), GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0). Искал в справке, не нашел параметров октлючающих такую фичу. И надо понимать что такая функция очень опасна, если например вместо файла указали саму букву диска и тут же производится запись данных?

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 19:42 26-11-2008
fcdobpiy



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maks150988
ты можешь отключить фичу записи дисков в самой винде. а с включенной - это нормальная реакция. что ты ожидал увидеть при попытке сохранить на сд(или двд)?

Всего записей: 410 | Зарегистр. 22-08-2005 | Отправлено: 20:06 26-11-2008
   

Страницы: 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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 4
ShIvADeSt (28-06-2009 02:10): Продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=10477


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru