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

» Вопросы по Delphi 2

Автор: wader
Дата сообщения: 22.09.2006 17:32
GTA3
Идеи есть . Сегодня вечерком напишу.
Автор: FireZone
Дата сообщения: 22.09.2006 20:36
--удалено--
Автор: Erazer
Дата сообщения: 23.09.2006 13:49
RomanTim
Цитата:
- поправить в заголовочном файле в описании поля BOOL на Integer и задавать не False/True, а 0/1

не работает

Цитата:
Integer(lameConfig.format.LHV1.bWriteVBRHeader) := 1
- заработало!!!!!
ПАСИБОЧКИ!!!!!!!!!!!! я уже неделю с этой фигней страдал
Автор: GTA3
Дата сообщения: 23.09.2006 19:20
с помошью какой функии можно иметь доступ
к определенной строке...в компоненте Tmemo.

Проверить есть ли в определенной строке, определенное слово

С помошью функции pos не получается это сделать

Добавлено:
wader
ок буду ждать!
Автор: Vetal303
Дата сообщения: 23.09.2006 21:34
GTA3
Цитата:
с помошью какой функии можно иметь доступ   к определенной строке...в компоненте Tmemo.

Memo1.Lines[2]:='46545'; - запишет "46545" в 2 итемс, нумерация с нуля.


Цитата:
Проверить есть ли в определенной строке,  определенное слово   С помошью функции pos не получается это сделать

Чего Архангельский пишет:

Цитата:
Pos(Substr: string; S: string): Integer
Возвращает позицию (индекс) первого вхождения Substr в S; Если Substr нет
в S, возвращается 0.

Автор: GTA3
Дата сообщения: 23.09.2006 22:02
Vetal303

Цитата:
Чего Архангельский пишет:

Цитата:Pos(Substr: string; S: string): Integer
Возвращает позицию (индекс) первого вхождения Substr в S; Если Substr нет
в S, возвращается 0.


так с помошью pos можно проверить? если да покажи пожалуйста на примере
Автор: wader
Дата сообщения: 23.09.2006 22:07
GTA3
Пытаюсь понять что тебе требуется, но похоже мои телепатические способности к концу недели не работают.

Можешь сказать чем тебе не подходят решения от SERGE_BLIZNUK, RomanTim и Vetal303?

Ну как извращенный вариант:
Если есть желание, то сделай цикл от 0 до Memo1.Lines.Count-1.
И проверяй
Код: if Pos('ID',Memo1.Lines[i])>0 then inc(idx);
Автор: NewbieCnt
Дата сообщения: 25.09.2006 16:07
xitsmex
Похоже это то что нужно, спасибо. Однако если разобрусь с кодировкой, всё равно mime тип только для чтения, тогда зачем разбираться? Лучше написать в текстовом редакторе ручками, а далее Пуск > Выполнить...
Автор: yuish
Дата сообщения: 25.09.2006 16:37
В дельфе в опция проекта есть версион инфо. а можно как нибудь передавать автоматом код версии в заголовок программы? Или после каждого бьюилда вручную только менять?
Автор: RedPromo
Дата сообщения: 25.09.2006 16:51
yuish
Можно если программно формировать заголовок программы при старте.
Автор: deadbitch
Дата сообщения: 25.09.2006 16:51
wader

Цитата:
deadbitch
Может расскажешь, что у тебя за задача. А так код можно долго переделывать.
Что ты такое интересное делаешь?

Смотри, у меня задача типа интерактивной карты, где подложка грузится из EMF, а интерактивные элементы сделаны на базе TcxLabel (из DevExpress), по нажатию на элемент - проваливаемся в глубь карты, соответственно грузится другой кусок (из EMF). Вот эта загрузка - самая тормозная часть задачи. Хотелось эту загрузку (читай отрисовку EMF ускорить), но через рисование на форме - не получилось, ибо так же тормозно, а через рисование на image тем же методом - не работает стреч.
Автор: afiget
Дата сообщения: 25.09.2006 17:38
Если карта интерактивная, можно на время загрузки новой порции карты показывать простенькую анимацию: приближение, например. Анимацию прерывать, когда карта уже полностью сформировалась.
Автор: Arvur
Дата сообщения: 25.09.2006 17:41
yuish
RedPromo
_http://www.delphidabbler.com/software.php?id=verinfo
И масса подобных на torry.net
Автор: wader
Дата сообщения: 25.09.2006 20:00
deadbitch
Кстати, попробуй отрисовывать в TBitmap (размером с клиентскую область формы). А на форму выводи BitBlt. У метафайлов действительно медленная отрисовка.

afiget
Клаcсный аватар!
Автор: xitsmex
Дата сообщения: 25.09.2006 21:09
Arvur
Ну не совсем внимательны вы. Просят же для ЗАПИСИ. Для чтения их итак полно.
yuish
Мы теперь пользуемся консольной утилиткой - проставляем версии в нескольких файлах сразу.
Автор: Arvur
Дата сообщения: 25.09.2006 21:58
xitsmex

Цитата:
передавать автоматом код версии в заголовок программы

Мне показалось, что речь идет о Form.Caption (ну или Application.Title )
Если речь о записи - действительно. либо утилитка, либо DDevExtensions (кажется умеет verinfo редактировать для всех файлов пакета одновременно).
Автор: Ramazan
Дата сообщения: 25.09.2006 22:48
yuish
Заголовок программы - это комментарий в исходнике? Если да - то только написанием эксперта.

Добавлено:
All
Пора вводить унифицированную терминологию
Автор: Arvur
Дата сообщения: 26.09.2006 00:27
Ramazan

Цитата:
Пора вводить унифицированную терминологию

Ай согласен. Если еще и третья трактовка нашлась...


З.Ы. сорри за оф но, блин, весело
yuish, родимый, что ж это за заголовок такой?

All
Оффтопить так оффтопить.. Насчет номера версии :
Никто не знает, как InnoSetup заставить номер версии выбранного exe включать в название инсталляционного файла?
Например, setup_1_0.exe
Можно поизвращаться, но вдруг готовое решение есть.
Автор: ShIvADeSt
Дата сообщения: 26.09.2006 01:49
Arvur

Цитата:
Никто не знает, как InnoSetup заставить номер версии выбранного exe включать в название инсталляционного файла? Например, setup_1_0.exe

по инсталлам соотв топик, тут Дельфи.
Автор: dmit000
Дата сообщения: 26.09.2006 05:05
Скажите пожалуйсто
Имеется ли у простой формы свойство: "потеря фокуса"
Автор: Ramazan
Дата сообщения: 26.09.2006 05:37
dmit000
OnDeactivate
Автор: deadbitch
Дата сообщения: 26.09.2006 08:47
wader

Цитата:
deadbitch
Кстати, попробуй отрисовывать в TBitmap (размером с клиентскую область формы). А на форму выводи BitBlt. У метафайлов действительно медленная отрисовка.

В TBitMap отрисовывать из чего - из метафайлов? Можешь привести кусок кода?
Автор: dmit000
Дата сообщения: 26.09.2006 14:32
Ramazan
Например я пишу код

procedure TForm1.FormDeactivate(Sender: TObject);
begin
close;
end;

так вот я хочу чтобыпри потери фокуса формы, форма закрывалась, а этот код не работает.

ещё раз есть ли у формы свойство "потеря фокуса"?
Автор: RomanTim
Дата сообщения: 26.09.2006 14:49
dmit000
Цитата:
ещё раз есть ли у формы свойство "потеря фокуса"?

Есть сообщение WM_ACTIVATE
Код: procedure WMActivate(var Message: TMessage); message WM_ACTIVATE;
...
procedure TForm1.WMActivate(var Message: TMessage);
begin
if Message.WParam = WA_INACTIVE then Close;
end;
Автор: wader
Дата сообщения: 26.09.2006 14:52
deadbitch
Ага, из метафайла.

вот примерный код:
[more=Исходник]
Код:

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Pic.LoadFromFile(ExePath+'EMF\'+img);
bmp.Canvas.StretchDraw(ClientRect,pic.Graphic);
Invalidate;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
bmp := TBitmap.Create;
bmp.PixelFormat = pf32bit;
bmp.Width := ClientWidth;
bmp.Height := ClientHeight;

pic := TPicture.Create;
pic.LoadFromFile(ExePath + 'EMF\'+map);

bmp.Canvas.Brush.Color := clBtnFace;
bmp.Canvas.FillRect(Rect);
bmp.Canvas.StretchDraw(ClientRect,pic.Graphic);

Invalidate;
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
Canvas.Draw(0,0,bmp);
end;

procedure TForm1.FormResize(Sender: TObject);
begin
bmp.Width := ClientWidth;
bmp.Height := ClientHeight;

bmp.Canvas.Brush.Color := clBtnFace;
bmp.Canvas.FillRect(Rect);
bmp.Canvas.StretchDraw(ClientRect,pic.Graphic);

Invalidate;
end;

Автор: yuish
Дата сообщения: 26.09.2006 15:51
xitsmex
А что за утилитка и где взять?
Автор: Jokerjar
Дата сообщения: 26.09.2006 16:12
Отлавливаю колесико мыши следующей глобальной ловушкой:

function GlobalMouseHook(code: integer; wParam: word; lParam: longword): longword; stdcall;
begin
if code <> HC_ACTION then begin
GlobalMouseHook:=CallNextHookEx(CurrentHook,code,wParam,lparam);
Exit;
end;
if Wparam = WM_MOUSEWHEEL then
showmessage('wheel!');
CallNextHookEx(CurrentHook,code,wParam,lparam);
GlobalMouseHook:=0;
Exit;
end;

Здесь проблем никаких нет. Но хочу узнать направление вращения колесика, и вот никак не могу сообразить. Пробовал вместо showmessage вставлять следующий код:

if TWMMouseWheel(Pointer(Lparam)^).WheelDelta > 0 then
showmessage('Up') else showmessage('Down');

Кто знает, в чем бага?

[more=Полный текст ловушки]library mouse;

uses
windows, messages, KOL {или dialogs};

var
CurrentHook: HHook;

function GlobalMouseHook(code: integer; wParam: word; lParam: longword): longword; stdcall;
begin
if code <> HC_ACTION then begin
GlobalMouseHook:=CallNextHookEx(CurrentHook,code,wParam,lparam);
Exit;
end;
if Wparam = WM_MOUSEWHEEL then begin
//showmessage('wheel!');
if TWMMouseWheel(Pointer(Lparam)^).WheelDelta > 0 then
showmessage('Up') else showmessage('Down');
end;
CallNextHookEx(CurrentHook,code,wParam,lparam);
GlobalMouseHook:=0;
Exit;
end;

procedure Hook(Flag:Boolean); export; stdcall;
Begin
IF Flag then begin
currentHook:=SetWindowsHookEx(WH_Mouse,@GlobalMouseHook,HInstance,0);

end
Else
Begin
UnhookWindowsHookEx(currentHook);
currentHook:=0;
End;
End;

exports Hook;

begin
end.

{
В екзешнике объявляем процедуру:
procedure Hook(Flag:Boolean); stdcall; external 'mouse.dll';

Используем так:
Hook(true) - ставим хук, Hook(false) - убираем
}[/more]
Автор: wader
Дата сообщения: 26.09.2006 16:54
Jokerjar
Поправь тег "more"

Насчет вопроса:
С чего ты взял, что lParam - указатель на TWMMouseWheel?
lParam - указатель на MOUSEHOOKSTRUCT.
Для определения WhellDelta нужно приводить к MOUSEHOOKSTRUCTEX (Есть только в Win2000 и выше).

По поводу описания структуры:
[more=MOUSEHOOKSTRUCT]
Код:
typedef struct {
POINT pt;
HWND hwnd;
UINT wHitTestCode;
ULONG_PTR dwExtraInfo;
} MOUSEHOOKSTRUCT, *PMOUSEHOOKSTRUCT;

pt - Specifies a POINT structure that contains the x- and y-coordinates of the cursor
hwnd - Handle to the window that will receive the mouse message
wHitTestCode - Specifies the hit-test value.
dwExtraInfo - Specifies extra information associated with the message.
Автор: Jokerjar
Дата сообщения: 26.09.2006 17:53
Странно все это... получается так:

MOUSEHOOKSTRUCT = packed record
pt: TPoint;
hwnd: HWND;
wHitTestCode: UINT;
dwExtraInfo: DWORD;
end;

здесь нет ничего похожего на направление колесика... есть вот тут:

TWMMouseWheel = packed record
Msg: Cardinal;
Keys: SmallInt;
WheelDelta: SmallInt;
case Integer of
0: (
XPos: Smallint;
YPos: Smallint);
1: (
Pos: TSmallPoint;
Result: Longint);
end;

Связи между типами не наблюдаю... Если ловить сообщение WM_MOUSEWHEEL, то в wparam и находится указатель на TWMMouseWheel, но ведь у меня ловушка wh_mouse. Т.е. в wparam находится хэндл окна... Что посоветуете? (Писать ловушку wh_getmessage не предлагать. Все должно быть в wh_mouse)
Автор: STEEL
Дата сообщения: 26.09.2006 17:59
Пишу DLLку. Как узнать в какую дирикторию её положили? GetDir не прокатывает :}

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Событие STFilter(DBGridEh) ???


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