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

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

   

Czechoslovak



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
AdminOrLooser
установи для формы DoubleBuffered:=true, хотя лучше было имедж разместить на панели и для нее установить  DoubleBuffered:=true

Всего записей: 175 | Зарегистр. 27-06-2007 | Отправлено: 16:00 23-04-2008
AdminOrLooser



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не! Бесполезно! Не помогло! Есть какой нить другой вариант?

Всего записей: 32 | Зарегистр. 14-03-2008 | Отправлено: 17:07 23-04-2008
RomanTim

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
AdminOrLooser
Создай TBitmap, нарисуй на нем картинку, а когда будет готова Image.Picture.Assign(bmp)

Всего записей: 375 | Зарегистр. 11-09-2003 | Отправлено: 17:37 23-04-2008
AdminOrLooser



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

Всего записей: 32 | Зарегистр. 14-03-2008 | Отправлено: 20:21 23-04-2008
RomanTim

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
AdminOrLooser
Код:
var
  bmp: TBirmap
begin
  bmp := TBitmap.Create;
  bmp.SetSize(Image1.Width, Image1.Height);
  // рисуешь свою картинку по bmp.Canvas
  Image1.Picture.Assign(bmp);
  bmp.Free;

Всего записей: 375 | Зарегистр. 11-09-2003 | Отправлено: 22:45 23-04-2008
Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здраствуйте. Снова задам свой вопрос. Есть массив:
 

Код:
 
var
  MenuItems : array [1..19] of TMenuItem =
             (
             (text : PChar('Данные о программе'); bmp : 0),
             (text : PChar('Обсудить на форуме'); bmp : 0),
             (text : PChar('Отправить сообщение'); bmp : 0),
             (text : PChar('Проверить обновление'); bmp : 0),
             (text : 'Свернуть / Развернуть'; bmp : 0),
             (text : 'Информация о потоке'; bmp :0),
             (text : 'Настройки программы'; bmp : 0),
             (text : 'Добавить запись [Ins]'; bmp : 0),
             (text : 'Изменить запись [F2]'; bmp : 0),
             (text : 'Удалить запись [Del]'; bmp : 0),
             (text : 'Обновить плейлист [F5]'; bmp : 0),
             (text : 'Список радиостанций'; bmp : 0),
             (text : 'Открыть URL адрес'; bmp : 0),
             (text : 'Проиграть станцию'; bmp : 0),
             (text : 'Остановить станцию'; bmp : 0),
             (text : 'Записать станцию'; bmp : 0),
             (text : 'Остановить запись'; bmp : 0),
             (text : 'Открыть директорию'; bmp : 0),
             (text : 'Выход из программы'; bmp : 0)
             );
 

Как его правильно проинициализировать вслучае когда я хочу грузить для него строки из ресурсов? На простом-то массиве понятно... Я первый раз столкнулся с массивами такими, поэтому интересуюсь...
 
Ведь MenuItems[1] := (text : PChar('Данные о программе'); bmp : 0); это же неправтльно и компилятор ругается. Вот хотел поинтересоваться у гуру как правильно запрлнить массив.
 
Ах, да, это нужно для моего дурацкого радио плейера, основанного на движке басс. Сам исходный код тут http://stream-player.narod.ru/download/stream_player_scr.zip.
Вот может кто поможет доработать.))

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



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

Цитата:
Maks150988

Интересный вопрос...  
Сам хотел бы услышать ответ, с примерчиком!

----------
Честь превыше всего!
Верность превыше чести!

Всего записей: 267 | Зарегистр. 18-09-2006 | Отправлено: 08:57 25-04-2008
RostY



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
с ресурса не знаю, когда-то я грузил из іні-файла примерно таким способом:
Подробнее...

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

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maks150988
Не очень понял, но например:

Код:
 
type
  TMyMenuItem = record
    Msg: Pointer;
    Bmp: Integer; //? THandle?
  end;
 
resourcestring
  SMsg_About = 'Данные о программе';
  SMsg_SendMessage = 'Отправить сообщение';
 
var
  MenuItems : array [1..19] of TMyMenuItem = (
             (Msg : @SMsg_About; bmp : 0),
             (Msg : @SMsg_SendMessage; bmp : 0),  
  ...
 

а там, где нужно получить текст:

Код:
 
  LoadResString(MenuItems[ I ].Msg);
 

Имена заменил, потому что "Text" - ключевое слово, а TMenuItem уже есть в Menus. Конечно, я знаю что пишете "напрямую", а не через VCL, но все таки...

Всего записей: 119 | Зарегистр. 20-03-2003 | Отправлено: 09:52 25-04-2008 | Исправлено: Mandor Sawall, 13:21 25-04-2008
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"?

Всего записей: 2318 | Зарегистр. 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", но может вы просто неправильно туда пишете?

Всего записей: 2318 | Зарегистр. 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.

Всего записей: 2318 | Зарегистр. 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
   

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