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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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

   

ymg2000



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maks150988
Попробуй так:
MenuItems[j].Text := ...;
MenuItems[j].BMP.Assign(...);
А загрузка из ресурса, возможно это пригодится:
Подробнее...
Только адаптируй под BMP, это уже найдешь.

Всего записей: 2391 | Зарегистр. 24-08-2007 | Отправлено: 10:03 25-04-2008
MrZeRo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maks150988
Во-первых, TMenuItem - это класс, его нельзя инициализировать таким способом!
Для загрузки строки можно использовать  

Цитата:
 
function LoadStr(Ident: Integer): string;
Description  
LoadStr loads the string resource given by Ident from the application's executable file or shared library. If the string resource does not exist, LoadStr returns an empty string.  
 

или через WindowsAPI:

Цитата:
 
int LoadString(          
  HINSTANCE hInstance,
  UINT uID,
  LPTSTR lpBuffer,
  int nBufferMax
);
 

Последней функцией можно грузить не только из текущего exe-файла, но и из какого-нибудь другого или из dll, что может быть удобно для локализации.
Более подробно про работу с ресурсами - в MSDN.

----------
... не это главное ...

Всего записей: 831 | Зарегистр. 30-01-2002 | Отправлено: 12:16 25-04-2008
QWERTYUIOPQQ

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Необходим HELP!
 
Возникли две проблемы:
Реализовать в Delphi программно -  
1. Добавление, удаление, смена имени,типа, длины поля (полей) в существующей таблице;
2. Сохранение структуры существующего файла, внесение необходимых изменений в структуру, на основе полученной структуры создание новой таблицы, перекачка сведений из существующей таблицы в вновь созданную.
 
Желательно применительно к DBF - файлу (component Halcyon).
 
Очень прошу помочь вариантами решения!

Всего записей: 1 | Зарегистр. 24-05-2006 | Отправлено: 15:12 25-04-2008
Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mandor Sawall
Хм... Не получается что-то. Я уже теряюсь в догадках...
Компилятор ругается в
              DrawText(lpdis.hDC, @item.Msg[0], - 1, lpdis.rcItem, DT_SINGLELINE or DT_LEFT or DT_VCENTER);
что array type required в @item.Msg[0]
Попробовал не заморачиваясь через ExtTextOut вывести - вместо нормальных названий пунктов меню три буквы RVA на них...

RostY
.))
ymg2000
Тут надо помудрить и скорее всего изврат через SysUtils функции. Одним Api не отделаешься поди...
MrZeRo
Дык вот как сделать-то меню с иконками таким способом? Вставить в массив LoadString не получается. Только из-за этого заштопорилось все...

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

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maks150988
"@item.Msg[0]" это случайно не очепятка? Судя по всему должно быть так: "@item[0].Msg"?

Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 19:13 25-04-2008
Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Frodo_Torbins
Раньше было из TMenuItem значение text и было там "@item.text[0]". Все нормально было, вот я и по аналогии сделал. Также компилятор ругается и на "@item[0].Msg", хотя спокойно проглатывает "@item.msg". Но тут уже просто словесная белиберда выводится...

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 20:02 25-04-2008 | Исправлено: Maks150988, 20:08 25-04-2008
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maks150988
Тогда слишком мало информации. Незнаю что в вашем исполнении означает "@item.msg", но может вы просто неправильно туда пишете?

Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 22:31 25-04-2008
Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Frodo_Torbins
Да я уже просто от безысходности по всякому...
А исходный код между прочим доступен. Могли бы и глянуть...

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 22:40 25-04-2008
mauar



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как программно сделать запись в поле DBGrid?
Например нужно в поле DBGrid  добавить запись программно,
например номер или название города.
Что то у меня не получается, делаю примерно так:
 
DataModule1.ADOTableLab4.DataSetField('А сдесь должна быть запись в первое поле таблички').Index :=0   ;  

Всего записей: 134 | Зарегистр. 31-07-2006 | Отправлено: 17:20 27-04-2008
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maks150988
Эх, во-первых версия выложеных исходников уже немного отличается от того, что сейчас есть у вас. А во-вторых бросайте вы этот винапи и переходите на KOL&MCK. Получите тот же обьем экзе намного более простым способом. Или вы затеяли эту прогу ради изучения винапи? Хотя даже в этом случае вам полезно будет взглянуть на KOL.
P.S. Некоторые стандартные модули выполняют инициализацию перед началом работы. Эта инициализация всегда тащит за собой в экзешник довольно порядочный кусок кода. Но ее результаты не всегда используются во время работы. Это я к тому, что если модуль имеет секцию initialization, но вы используете из него всего пару простых функций, то возможно имеет смысл скопировать их к себе, а модуль выкинуть из uses.

Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 00:02 28-04-2008
Tantos



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mauar
Ты совершаешь классическую ошибку - путаешь компоненты манипулирования(редактирования) данными и компоненты отображения данных. В твоем случае советую посмотреть в сторону DBGrid::PickList, либо заносить данные вручную (запрос, DataSet->Insert()/Edit()/Post()).
 
P.S. Запись добавляется в БД, а не DBGrid .
P.P.S. Хочешь точный ответ - название БД, столбцов и таблиц в студию...

Всего записей: 1038 | Зарегистр. 31-05-2005 | Отправлено: 04:37 28-04-2008 | Исправлено: Tantos, 04:40 28-04-2008
mauar



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

Цитата:
Tantos


Цитата:
Запись добавляется в БД, а не DBGrid

Я знаю но так надо.
Я уже разобрался, получлось примерно так:
DataModule1.ADOTable1.Insert; // устанавливаем новую строчку
DataModule1.ADOTable1WideStringField1.AsString :='Сдесь мой текст';
DataModule1.ADOTable1.Post;  // сохраняем всю табличку сохраняется в БД  
 
Кстати если есть у кого совет как сделать сохранение не всей таблички а  
одного поля (ячейки) StringField?

Всего записей: 134 | Зарегистр. 31-07-2006 | Отправлено: 09:48 28-04-2008 | Исправлено: mauar, 09:50 28-04-2008
Tantos



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mauar
Куда ты хочешь сохранить?
 
Так. Тогда ничего не понятно... Как ты собрался работать с БД не через БД? В принципе, можно настроить DBGrid на авторедактирование, но, ИМХО, это изврат...

Всего записей: 1038 | Зарегистр. 31-05-2005 | Отправлено: 10:54 28-04-2008 | Исправлено: Tantos, 03:04 30-04-2008
mauar



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

Цитата:
Куда ты хочешь сохранить?

Читай выше в моей записи там написано. Просто так надо сделать, минуя прямое обращение к БД

Всего записей: 134 | Зарегистр. 31-07-2006 | Отправлено: 12:10 28-04-2008
RostY



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
QWERTYUIOPQQ
посмотри из RX компонентов демо-проект DBExpl32

Всего записей: 387 | Зарегистр. 11-01-2006 | Отправлено: 09:53 29-04-2008
Maks150988



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

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 06:35 30-04-2008
Czechoslovak



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Maks150988
  ListView1.DoubleBuffered := True;

Всего записей: 175 | Зарегистр. 27-06-2007 | Отправлено: 09:09 30-04-2008
Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Czechoslovak
Да не... Сне как-нибудь такое на Апи... Вот нашел какой-то LVS_EX_DOUBLEBUFFER, но список дрожит при изменении размеров. Вероятно это даже и не то...
 
Хотя вот отрыл какой-то код и попытался переделать:
 
var
  hdcWnd, hdcMem : HDC;
  hbmMem, hbmWnd : HBITMAP;
  PS : TPaintStruct;
===============================
    WM_PAINT :
      begin
        GetClientRect(hApp, R3);
        hdcWnd := BeginPaint(hApp, PS);
        hbmMem := CreateCompatibleBitmap(hdcWnd, R3.Right - R3.Left, R3.Bottom - R3.Top);
        hdcMem := CreateCompatibleDC(hdcWnd);
        hbmWnd := SelectObject(hdcMem, hbmMem);
        BitBlt(hbmWnd, 0, 0, R3.Right - R3.Left, R3.Bottom - R3.Top, hdcMem, 0, 0, SRCCOPY);
        SelectObject(hdcMem, hbmWnd);
        DeleteObject(hbmMem);
        DeleteDC(hdcMem);
        EndPaint(hApp, PS);
      end;
    WM_ERASEBKGND : Result := TRUE;
 
Вот... Получилось. Правда насчет корректности кода на очищение памяти не знаю, но вроде бы память не отжирается при изменении размеров.
 
Еще хотел узнать как динамически изменять положение столбов листвью при изменении размеров окна. Куда копать?

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 16:44 30-04-2008 | Исправлено: Maks150988, 21:42 30-04-2008
d617



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

Всего записей: 85 | Зарегистр. 15-11-2004 | Отправлено: 20:12 30-04-2008
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
d617
В Королевстве гляньте: http://www.delphikingdom.com/asp/itemq.asp?mode=1&itemid=8

Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 21:06 30-04-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