Блог по программированию в среде Delphi

Поиск по блогу

Есть идея по созданию интересной программы?

Опиши тут и я по возможности постараюсь это реализовать специально для тебя! Без $ ))

четверг, 30 сентября 2010 г.

Получение очередного значения генератора Firebird

select
    gen_id(generator_name, 1 ) as field_id
from rdb$database

одна запись в поле  field_id со значением очередного значения генератора generator_name

воскресенье, 26 сентября 2010 г.

Диалоговое окно WebBrowser ошибка сценария

Избавляемся от окна путем установки значения свойства Silent:=True

WebBrowser1.Silent:=True;

Свойство Silent запрет демонстрации ошибок сценария на сайте

Этот документ был изменен. Сохранить изменения?

Это диалоговое окно возникает только когда  WebBrowser находиться в режиме редактора и происходит загрузка другого документа, а в документ который был первоначально загружен были произведены изменения.
Чтобы избавиться от этого диалогового окна следует отключить режим редактора в WebBrowser и загрузить документ после чего снова включить режим редактора.
Включения редактора в WebBrowser я повесил на событие возникающие по окончанию загрузки документа в WebBrowser NavigateComplite.
.....
WebBrowser1.OnNavigateComplete2: = NavigateComplite;
(WebBrowser1.Document as IHTMLDocument2).designMode := 'off';
WebBrowser1.Navigate('Документ');
 .....
procedure NavigateComplite (ASender: TObject; const pDisp: IDispatch; var URL: OleVariant);
begin
  (WebBrowser1.Document as IHTMLDocument2).designMode := 'On';

end;

суббота, 11 сентября 2010 г.

FIBPlus + Ehlib локальная сортировка

Для того, чтобы в гриде Ehlib'а работала сортировка и фильтрация необходимо добавить в uses модуль находящийся в папке EhLib 5.2.84\DataService\Others естественно если вы работаете с
Ado необходимо выбрать EhlibADO в нашем случае необходимо выбрать EhlibFib
после чего в свойствах грида выставить значения так
 .SortLocal := True;
 .STFilter.InstantApply := True;
 .STFilter.Local := True;
 .STFilter.Visible := True;
после чего фильтрация должна работать в гриде нормально без написания дополнительного кода

И необходимо в Uses прописать EhlibFIB (для фибов)

Загрузка изображения из интернета в поток (Delphi)

uses wininet;

function LoadImage(url:string): TMemoryStream;
var
  hInternet, hConnect: pointer;
  dwBytesRead, i, L: cardinal;
  sTemp: AnsiString;
begin
  Result:=TMemoryStream.Create;
  hInternet := InternetOpen('MyApp', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  try
    if Assigned(hInternet) then
    begin
      hConnect := InternetOpenUrl(hInternet, PChar(url), nil, 0, 0, 0);
      if Assigned(hConnect) then
        try
          i := 1;
          repeat
            SetLength(sTemp, L + i);
            if not InternetReadFile(hConnect, @sTemp[i], sizeof(L),dwBytesRead) then
              break;
            inc(i, dwBytesRead);
            until dwBytesRead = 0;
        finally
          InternetCloseHandle(hConnect);
        end;
    end;
  finally
    InternetCloseHandle(hInternet);
  end;
  Result.Write(sTemp[1], Length(sTemp));
  Result.Position := 0;
end;

Данную функцию использовал для загрузки изображений с различными форматами:
bmp, gif, png, jpeg, tiff, ico и др. Проблем не возникало. Главное, что необходимо сделать это сохранять картинки с теми же расширениями которые у них были, чтобы потом не возникало путаницы. Я сохранял с именами файлов которые брал из прямых ссылок на картинки.

Для получения имени файла из Url использую функцию

function ExtractUrlFileName(const AUrl: string): string;
var
  i: Integer;
begin
  i := LastDelimiter('/', AUrl);
  Result := Copy(AUrl, i + 1, Length(AUrl) - (i));
end;