Borland Delphi FAQ
Страница 9.



------------------------------------------------------------

Q-83:  Как убрать VerticalScrollBar из TListBox навсегда?

------------------------------------------------------------
procedure TListBoxForEver.CreateParams (var Params:
  TCreateParams);
file://override
begin
  inherited CreateParams(Params);
  Params.Style := Params.Style and not WS_VSCROLL;
end;

Leonid Troyanovsky <
Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script >

------------------------------------------------------------

Q-84:  Как убрать из ListView горизонтальный скролбар навсегда?

------------------------------------------------------------
type
  TNoHScrollListview = Class( TListview )
  private
    Procedure WMNCCalcSize( Var msg: TMessage ); message WM_NCCALCSIZE;
  end;

procedure TNoHScrollListview.WMNCCalcSize(var msg: TMessage);
var
  style: Integer;
begin
  style := getWindowLong( handle, GWL_STYLE );
  If (style and WS_HSCROLL) <> 0 Then
    SetWindowLong( handle, GWL_STYLE, style and not WS_HSCROLL );
  inherited;
end;

by Peter Below

------------------------------------------------------------

Q-85:  Как обнаружить активность юзера?

------------------------------------------------------------
Application.OnMessage := DoMessageEvent;

procedure TForm1.DoMessageEvent ( var Msg: TMsg;
  var Handled: Boolean);
begin
  case Msg.message of
    WM_KEYFIRST..WM_KEYLAST,
    WM_MOUSEFIRST..WM_MOUSELAST:
      {
Произошли события клавиатуры и мыши};
     ..
  end;
end;

Leonid Troyanovsky <
Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script >

------------------------------------------------------------

Q-86:  Как передать строку другому приложению?

------------------------------------------------------------
получатель:

procedure ReceiveMessage (var Msg: TMessage); message WM_COPYDATA;
..
procedure TFormReceive.ReceiveMessage;
var
  pcd : PCopyDataStruct;
begin
  pcd := PCopyDataStruct(Msg.LParam);
  Caption := PChar(pcd.lpData);
end;

отправитель:

procedure TFormXXX.Button1Click(Sender: TObject);
var
 cd : TCopyDataStruct;
begin
 cd.cbData := Length(Edit1.Text)+1;
 cd.lpData := PChar(Edit1.Text);
 SendMessage ( FindWindow('TFormReceive', nil),
               WM_COPYDATA,
               0,
               LParam(@cd));
end;

Leonid Troyanovsky <
Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script >

------------------------------------------------------------

Q-87:  Удаление файлов из временного каталога, безопасно ли?

------------------------------------------------------------
При получении имени папки предназначенной для хранения временных файлов
могут возникнуть ytrjnhst проблемы.

>> Прекрасно это выглядит, когда в качестве каталога временных файлов
назначен например C:\Windows

>:-) Я и говорю что небезопасно.

Особенно пикантно это выглядит, в свете того, что

Remarks
Windows 95/98/Me: The GetTempPath function gets the temporary file
path as follows:

The path specified by the TMP environment variable. The path specified by
the TEMP environment variable, if TMP is not defined or if TMP specifies a
directory that does not exist. The current directory, if both TMP and TEMP
are not defined or specify nonexistent directories.

Этак переименовываешь C:\TEMP - и программа чистит текущий каталог :-)

Windows NT/2000 or later: The GetTempPath function does not verify that the
directory specified by the TMP or TEMP environment variables exists. The
function gets the temporary file path as follows:

The path specified by the TMP environment variable.  The path specified by
the TEMP environment variable, if TMP is not defined.  The Windows
directory, if both TMP and TEMP are not defined.

Этак удаляешь переменные окружения - и программа "деинсталлирует" Windows

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

При использовании функции GetTempPath проверить если подстрока TEMP в
результате и в случае отсутствия вхождения запросить пользователя для
принятия решения, с рекомендацией создать каталог TEMP и необходимые
переменные среды, лучше посоветоваться обратиться к администратору для
принятия решения. Это простое правило позволит избежать серьезных
последствий.

Тенцер А.Л. < Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script >
Andrew V. Fionik <
Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script >
Anatoly Podgoretsky <
Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script >

 
« Предыдущая статья   Следующая статья »