DiBR
обычная кошмарная
домашняя страничка
Ежекакполучится околокомпьютерное обозрение
 
  <<<  предыдущий Tech! archive #780 следующий  >>>  
   Последний выпуск       Архив       Ссылки       Полезности       humor.filtered       Фотки       О сайте   
          Это - достаточно беспорядочный архив сообщений конференций сети fidonet, которые на момент их прочтения мной показались полезными или интересными. Многие устарели, многие узкоспецифичны и малоинтересны, но может оказаться и что-то новое...
         
- __techs (2:5015/42) ----------------------------------------------- __techs -
Msg  : 780 of 1000                         Scn
From : Costik Aganichev                    2:5020/603.36   13 Jan 99  18:01:26
To   : All                                                 14 Jan 99  09:50:48
Subj : Дайджест по конференции RU.DELPHI [2 of 2]
-------------------------------------------------------------------------------
@AREA:RU.CBUILDER
═════════════════════════════════════════════════════════════════════════════
* Forwarded by Costik Aganichev (2:5020/603.36)
* Area : RU.DELPHI
* From : Nick Slepchenko, 2:5064/6.10 (11 Jan 99 11:31)
* To   : All
* Subj : Дайджест по конференции RU.DELPHI [2 of 2]
═════════════════════════════════════════════════════════════════════════════
/│/ Приветствую тебя, _All_ !
/╘══════════════════-═════-════-═══-══--/ /--/ /-/ /···/

-+----------------------------------------------------------------------------

> Как запустить создание письма по указанному адресу?
> Как запустить браузер по http-адресу?

Сначала необходимо написать в разделе uses ShellAPI.

E-mail: ShellExecute(hndl,'open','mailto:towho@mysite.com','','',0);
Страничку: ShellExecute(hndl,'open','http://mysite.com,'','',0);

hndl - переменная типа hwnd. (После работы процедуры в ней будет хэндл
открытого окна).
-+----------------------------------------------------------------------------

> Как рисовать прямо на Рабочем Столе?

Procedure DrawOnDesktop;
Var DC:HDC;
   DesktopCanvas:TCanvas;
begin
 DC:=GetDC(0);   // получили DC Рабочего Стола
 try
    DesktopCanvas:=TCanvas.Create;
    DesktopCanvas.Handle:=DC;
    ..................
    // здесь рисуем на Canvas Рабочего Стола
    ..................
 finally
   ReleaseDC(0,DC);
   DesktopCanvas.Free;
 end;
end;
-+----------------------------------------------------------------------------

> Как увеличить в RichEdit размер редактируемого файла?

RichEdit1.Perform(EM_LIMITTEXT, нужный размер , 0);
Перед каждым открытием файла это действие необходимо повторять.
-+----------------------------------------------------------------------------

> В каком порядке происходят события при создании и показе окна?

  OnCreate, OnShow, OnPaint, OnActivate, OnResize и снова OnPaint.
-+----------------------------------------------------------------------------

> Если приложение долго выполняет какой-то цикл, как сделать так, чтобы
> остальные приложения не подвисали?

Вставить в тело цикла: Application.ProcessMessages
-+----------------------------------------------------------------------------

> Как перекодировать строки из Win(1251) кодовой страницы в Dos(866)
> кодовую
> страницу и обратно?

CharToOEM/OEMToChar  и  CharToOEMBuff/OEMToCharBuff.
-+----------------------------------------------------------------------------

> Как использовать анимированные курсоры в программе?

 Пример формы, использующей анимированный курсор:
 ........................................................
 procedure TForm1.Button1Click(Sender: TObject);
 var
   h : THandle;
 begin
   h := LoadImage(0,'C:\\TheWall\\Magic.ani',
     IMAGE_CURSOR, 0, 0,
     LR_DEFAULTSIZE or LR_LOADFROMFILE);
   if h = 0 then ShowMessage('Cursor not loaded')
   else
   begin
     Screen.Cursors[1] := h;
     Form1.Cursor := 1;
   end;
 end;
 ........................................................
-+----------------------------------------------------------------------------

> Как сделать так, чтобы по Alt-F4 форма не закрывалась, а выдавала запрос
> на сохранение?

Обрабатывать событие OnCloseQuery
-+----------------------------------------------------------------------------

> Как выключить/включить PC Speaker?

Выключить:
 SyStemParametersInfo(SPI_SETBEEP,0,nil,SPIF_UPDATEINIFILE);

Включить:
 SyStemParametersInfo(SPI_SETBEEP,1,nil,SPIF_UPDATEINIFILE);
-+----------------------------------------------------------------------------

> Как скопировать файл?

 Эта процедура позволяет скопиpовать как весь файл пpи From и Count = 0,
 так и пpоизвольный его кусок.
 ........................................................
 function CopyFile( InFile,OutFile: String; From,Count: Longint ): Longint;
 var
   InFS,OutFS: TFileStream;
 begin
   InFS  := TFileStream.Create( InFile,  fmOpenRead );
   OutFS := TFileStream.Create( OutFile, fmCreate   );
   InFS.Seek( From, soFromBeginning );
   Result := OutFS.CopyFrom( InFS, Count );
   InFS.Free;
   OutFS.Free;
 end;
 ........................................................
-+----------------------------------------------------------------------------

> Как инсталлировать на время работы программы свои шрифты?

 Добавить фонт (.fon, .fot, .fnt, .ttf) в систему можно след. образом:
 ........................................................
 {$IFDEF WIN32}
 AddFontResource( PChar( my_font_PathName { AnsiString } ) );
 {$ELSE}
 var
   ss  : array [ 0..255 ] of Char;

 AddFontResource ( StrPCopy ( ss, my_font_PathName ));
 {$ENDIF}
 SendMessage ( HWND_BROADCAST, WM_FONTCHANGE, 0, 0 );
 ........................................................

 Убрать его по окончании работы:
 ........................................................
 {$IFDEF WIN32}
 RemoveFontResource ( PChar(my_font_PathName) );
 {$ELSE}
 RemoveFontResource ( StrPCopy ( ss, my_font_PathName ));
 {$ENDIF}
 SendMessage ( HWND_BROADCAST, WM_FONTCHANGE, 0, 0 );
 ........................................................

Где my_font_PathName - полный путь к файлу со шрифтом.
-+----------------------------------------------------------------------------

> Как узнать текущее разрешение экрана?

Screen.Width и Screen.Height
-+----------------------------------------------------------------------------

> Как в TMemo определить номер строки, в которой находится курсор и его
> местоположение в строке?

 ........................................................
 var X,Y: LongInt;

 Y:=Memo1.Perform(EM_LINEFROMCHAR, Memo1.SelStart, 0);
 X:=Memo1.Parform(EM_LINEINDEX, Y, 0);
 inc(Y);
 X:=Memo1.SelStart-X+1;
 ........................................................
-+----------------------------------------------------------------------------

> Есть программа на Delphi, котоpая отображает какой-то html. В html
> исполь-
> зуется gif-файл. Как в Delphi-пpоекте указать, чтобы этот gif находился
> в exe как некий кусок кода. А когда надо будет, записать его обратно в
> gif-файл без изменений, выковырнув из exe?

Можно, используя RxLib. После его установки в меню View появится пунктик
Project Resources. Hужно выбрать Project Resources->New->User Data и добавить
нужный файл. В своей программе необходимо написать:

var
 rs     : TResourceStream;
 a      : Pointer;
begin
 rs:=TResourceStream.Create(hinstance,'RCDATA_1',RT_RCDATA);
 try
   GetMem(a,rs.size);
   rs.Read(a^,rs.size);  {Теперь a - динамический указатель на код}

   { Здесь делается все, что необходимо с кодом, используя указатель a }

   FreeMem(a);
 finally
   rs.Free;
 end;
end;
-+----------------------------------------------------------------------------

*┌--------------------------------* *----* *---* *--* *-* *···*
*│* С уважением...       -═╬┤ик═-·[_FAQ_ TeAm]·═-

-+- Почтальон печкин с галчонком весом 3.00.Beta3+
+ Origin: The truth is out there... (C) X-Files (FidoNet 2:5064/6.10)
═════════════════════════════════════════════════════════════════════════════

Hello All!


                                                               Costik

... Далее действуем по правилу великого чешского ученого Буравчика
--- GoldED/W32 3.00.Beta5+
* Origin: Sardukar Unit, Zelenograd, Russia (2:5020/603.36)






<<<

архив dibr

>>>'