Это - достаточно беспорядочный архив сообщений конференций сети 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)