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

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

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

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

   

Chuvakstepan



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
skinash
Надо что-то прописать в TForm1.FormDestroy, но незнаю что именно  
2ALL
ПОМОГИТЕ! Срочно надо!

Всего записей: 202 | Зарегистр. 29-01-2007 | Отправлено: 13:40 24-08-2007
Grafus



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ругается на TSHFileOpStruct.
Какой компонент нужно вставить в форму и где его скачать?

Всего записей: 397 | Зарегистр. 15-12-2004 | Отправлено: 14:32 24-08-2007
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
yuish
Прошу пардону, у меня на работе видимо кто-то десятый установил, я точно не устанавливал, дистриба нет. Может быть это из-за апдейтов, у меня легальная копия?
Arvur

Цитата:
А если сообщения не обрабатывать - приложение "подвисает"

Я же написал ProcessMessages работает дольше чем Sleep(2). Проверять не надо - работаю в Автоматизированных Системах Коммерческого Учёта Электроэнергии. Может представляешь, что такое сервер опроса? А вот так будет полный нормал

Код:
 
  for I := 1 to 200 do  
  begin  
    Application.ProcessMessages;  
    Sleep(10);  
  end;
 

Принцип один - реже надо пользоваться ProcessMessages, тем более фигово если он попадает в работу потоков (TThread).
 
Добавлено:
Chuvakstepan
Надо до Application.Initialize узнать хэндл активного окна GetForegroundWindow. А в FormDestroy надо делать SetForegroundWindow для этого хендла.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 15:06 24-08-2007
skinash



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Chuvakstepan
Тебе delover правильно говорит. Я ж говорю, поищи через google статью "Мечты вуайериста". В ней подробно разбирается проблема работы с чужими окнами.
 
Grafus
Сорри, не сказал:

Код:
uses
  ShellAPI;

Всего записей: 145 | Зарегистр. 21-09-2006 | Отправлено: 15:28 24-08-2007
Chuvakstepan



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
delover
Спасибо! Ларчик то просто открывался:
 
SetForegroundWindow(Application.Handle)
 
Добавлено:
А ещё почему-то делаю так:
SetForegroundWindow(WizardForm.Handle)
 
Он говорит Unknown Identifier

Всего записей: 202 | Зарегистр. 29-01-2007 | Отправлено: 15:42 24-08-2007
skinash



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

Цитата:
SetForegroundWindow(Application.Handle)

Это ты со своим приложением работаешь.
А ведь тебе надо с чужим?
Сначала тебе надо запомнить хендл активного окна:

Код:
var
  H: HWND;
 
procedure TMainForm.FormCreate(Sender: TObject);
begin
  H := GetForeGroundWindow;
end;

А уже потом использовать этот хэндл:

Код:
procedure TMainForm.FormDestroy(Sender: TObject);
begin
  SetForegroundWindow(H);
end;

Всего записей: 145 | Зарегистр. 21-09-2006 | Отправлено: 16:14 24-08-2007
lavren



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ, можно ли поставить Delphi 2007 с другим каким нибуть Delphi чтобы не было ошибки при создании нового проекта (Access violation at address 00000000. Read of address 00000000.)?
Какие версии Delphi могут стоять вместе с CodeGear™ Delphi® for Microsoft® Windows™(Version 11.0.2627.5503 или другие) и на каких ОС, притом нормально работали?
И что можна сделать штобы Delphi 5 и Delphi 2007 стояли на Windows 2003 Server SP2 и нормально работали?

Всего записей: 545 | Зарегистр. 29-05-2007 | Отправлено: 16:22 24-08-2007
skinash



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lavren
Если уже стоит какая-нибудь Delphi, например 5, то когда устанавливаешь новую версию, надо внимательно ставить/снимать галочки в визарде, а конкретно, когда предлагает ассоциировать файлы с приложением (*.pas, например). Т.е. приложение по умолчанию для файлов *.pas должна оставаться Delphi5.
И если всё сделаешь правильно, то две а то и три версии Delphi могут "дружить" на одном компьютере.

Всего записей: 145 | Зарегистр. 21-09-2006 | Отправлено: 16:29 24-08-2007
Chuvakstepan



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
skinash
БОЛЬШОЕ огромное СПАСИБище! Вроде всё получилось

Всего записей: 202 | Зарегистр. 29-01-2007 | Отправлено: 16:40 24-08-2007
lavren



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
skinash
При установке Delphi 2007 снимаю галочки с .dfm, .dpk, .dpr, .pas
Delphi5 стоит в каталоге C:\Borland\Delphi5. Shared файлы к нему в C:\Borland\Shared.
Delphi 2007 ставлю в каталог по умолчанию.
Кажысь все аккуратно делаю, а оно не пашет!

Всего записей: 545 | Зарегистр. 29-05-2007 | Отправлено: 16:42 24-08-2007
Chuvakstepan



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
skinash
А если уже известен Hadle окна приложения, который надо сделать активным? то как поступать?

Всего записей: 202 | Зарегистр. 29-01-2007 | Отправлено: 18:12 24-08-2007
vserd

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

Цитата:
Delphi5 стоит в каталоге C:\Borland\Delphi5. Shared файлы к нему в C:\Borland\Shared.  
Delphi 2007 ставлю в каталог по умолчанию.  
Кажысь все аккуратно делаю, а оно не пашет!

Настрой все пути так, чтобы версии не прересекались.
 
У самого нормально со существуют Delphi 4, Delphi 5, Delphi 7, Delphi Turbo explorer.

Всего записей: 2065 | Зарегистр. 08-05-2002 | Отправлено: 15:35 25-08-2007
skinash



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

Цитата:
А если уже известен Hadle окна приложения, который надо сделать активным? то как поступать?

Ну так сделай его активным!

Код:
SetForegroundWindow(H);

Честно говоря, не понял вопроса.
 
Добавлено:
lavren
Попробуй снести все версии, почисти реестр и заново всё установи.
Я все пути оставлял по умолчанию, единственно это заморочка с ассоциацией файлов. Всё без проблем работает.

Всего записей: 145 | Зарегистр. 21-09-2006 | Отправлено: 17:29 25-08-2007
Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую всех тут. Есть небольшая загвоздка. Использую Drag & Drop. Надыбал вот такой код:
 

Код:
 
.....
procedure WMDropFiles(hDrop: dword);
var
  L, K                        : dword;
  DragFile                    :  PChar;
begin
  GetMem(DragFile, MAX_PATH);
  K := DragQueryFile(hDrop, $FFFFFFFF, nil, 0);
  for L := 0 to K - 1 do
  begin
    DragQueryFile(hDrop, L, DragFile, MAX_PATH);
    MessageBox(HWND, '', '', MB_OK or MB_ICONINFORMATION);
  end;
  FreeMem(DragFile);
end;
.....
    WM_DROPFILES  : begin
                      WMDropFiles(Wparam);
                    end;
.....
 

 
Как можно правильно приспособить этот код для допустим задачки: Использую стандартный диалог открытия файлов и когда открываю через него, могу дальше работать с файлами - смотреть информацию о них различную, а также изменять ее. А тут нет ничего. Что посоветуете?

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 19:26 25-08-2007 | Исправлено: Maks150988, 19:26 25-08-2007
Glukodel



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

Цитата:
Что посоветуете?

посоветуем подробней описывать проблему... например, как именно хочется заюзать
Цитата:
Drag & Drop
и что дальше надо делать с файлом.....

Всего записей: 97 | Зарегистр. 16-08-2004 | Отправлено: 22:28 25-08-2007
antonn2

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
стиль WS_EX_ACCEPTFILES для принимающего контрола выставлен?
 

Код:
procedure WMDropFiles(var Message: TWMDropFiles);
var aFile: array [0..255] of Char;
        FilesCount,N : Integer;
begin
 FilesCount := DragQueryFile(Message.drop, $FFFFFFFF, nil, 0);
       begin
       for N := 0 to FilesCount - 1 do begin
        DragQueryFile(Message.drop, N, aFile, 256);
        //aFile -  
        end;
       end;
       DragFinish(Message.Drop);
end;


Всего записей: 97 | Зарегистр. 13-11-2006 | Отправлено: 23:44 25-08-2007 | Исправлено: antonn2, 23:45 25-08-2007
Maks150988



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

Цитата:
WS_EX_ACCEPTFILES
Ну в диалоге выставлен.
Код такой:

Код:
 
type
  TOpenFileName       = packed record
    lStructSize       : DWORD;
    hWndOwner         : hWnd;
    hInstance         : HINST;
    lpstrFilter       : PAnsiChar;
    lpstrCustomFilter : PAnsiChar;
    nMaxCustFilter    : DWORD;
    nFilterIndex      : DWORD;
    lpstrFile         : PAnsiChar;
    nMaxFile          : DWORD;
    lpstrFileTitle    : PAnsiChar;
    nMaxFileTitle     : DWORD;
    lpstrInitialDir   : PAnsiChar;
    lpstrTitle        : PAnsiChar;
    Flags             : DWORD;
    nFileOffset       : Word;
    nFileExtension    : Word;
    lpstrDefExt       : PAnsiChar;
    lCustData         : LPARAM;
    lpfnHook          : function(Wnd: hWnd; Msg: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
    lpTemplateName    : PAnsiChar;
end;
...
function CharReplace(const Source: String; oldChar, newChar: Char): String;
var
  i: Integer;
begin
  Result := Source;
  for i := 1 to Length(Result) do
    if Result[i] = oldChar then
      Result[i] := newChar
end;
 
function GetOpenFileNameA(var OpenFile: TOpenFileName): Bool; stdcall; external 'comdlg32.dll' name 'GetOpenFileNameA';
var
  Inst, hWnd : Integer;
  FileName   : array[0..4095] of Char;
...
procedure SelectFile;
var
  OpenFile               : TOpenFileName;
  StringTable_TitleOpen  : String;
  StringTable_FilterOpen : String;
begin
  SetLength(StringTable_TitleOpen, 255);
  LoadString(HInstance, 1655, PChar(StringTable_TitleOpen), 255);
  SetLength(StringTable_FilterOpen, 255);
  LoadString(HInstance, 1653, PChar(StringTable_FilterOpen), 255);
  FillChar(OpenFile, SizeOf(TOpenFileName), 0);
  with OpenFile do
    begin
      lStructSize  := SizeOf(TOpenFileName);
      hInstance    := Inst;
      hWndOwner    := hWnd;
      lpstrFilter  := PChar(CharReplace(StringTable_FilterOpen, '|', #0));
      nFilterIndex := 1;
      nMaxFile     := SizeOf(FileName);
      lpstrTitle   := PChar(StringTable_TitleOpen);
      lpstrFile    := FileName;
      Flags        := OFN_LONGNAMES or OFN_EXPLORER or OFN_FILEMUSTEXIST or OFN_PATHMUSTEXIST or OFN_HIDEREADONLY;
      if GetOpenFileNameA(OpenFile) = true then
      begin
        SetDlgItemText(FindWindow(nil, HWND_MAIN_DIALOG), MAIN_FILE_EDIT, lpstrFile);
        GetDlgItemText(FindWindow(nil, HWND_MAIN_DIALOG), MAIN_FILE_EDIT, FileName, 4096);
      end;
    end;
end;
 

Вроде все указал.

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 12:14 26-08-2007
Vetal83

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Люди! кто шарит в делфи помогите с одним проектом потому-что я полный ноль в делфи.
Есть код на прогу Inno Setup 5.0.8 нужно как-то зарегестрировать один компонент (NewGroupBox) и чтоб инно его понимал в скриптах, этого нехватает для полной красоты инсталлятора.
Код с компонентом и небольшим описанием выложил сюда (538кб):
http://data.cod.ru/33245593034
а саму прогу можно скачать отсюда:
http://files.jrsoftware.org/is/5/
 
Заранее Благодарен!

Всего записей: 26 | Зарегистр. 06-07-2007 | Отправлено: 20:27 26-08-2007
SpoinT



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Vetal83
Мужик, тебе в тему Inno Setup

----------
В жизни мне не хватает 2-х вещей - кнопок Save Game и Load Game...

Всего записей: 840 | Зарегистр. 31-01-2007 | Отправлено: 00:23 27-08-2007
Vetal83

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SpoinT
Я темой не ошибся, это касается исходников на делфи.

Всего записей: 26 | Зарегистр. 06-07-2007 | Отправлено: 00:28 27-08-2007
   

Страницы: 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 (все версии) - часть 3
ShIvADeSt (07-04-2008 02:27): продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=9383


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru