Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Delphi Russian Knowledge Base 2.3, Новая версия от 30 января 2005 года 
:(
    Опции темы
Guedda
Дата 20.11.2006, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 14
Всего: 78



Цитата(W1zArD @  19.11.2006,  12:38 Найти цитируемый пост)
а подборка больше чем в dw?

ДА. подборка больше.


Цитата(W1zArD @  19.11.2006,  12:38 Найти цитируемый пост)
и еще не плохо бы создать оболочку...

Есть уже оболочка:
http://quadro.drkb.ru/


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Atos
Дата 3.1.2007, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 2.9.2004
Где: Омск

Репутация: нет
Всего: нет



По поводу статьи DRKB "Как вывести диалог Обзор папок ":

Код, приведённый в статье, к сожалению, оказался абсолютно некорректным.
Во-первых, не проинициализировано поле ulFlags структуры TBrowseInfo, что приводит к чудесам: при каждой перекомпиляции программы диалог выглядит по-разному и предлагает разные возможности. (о том, за что отвечает ulFlags, можно почитать в MSDN'е)
Во-вторых, даже при корректном использовании  TBrowseInfo программа под Windows 95 вылетает (надо бы ещё под 98 посмотреть).

И вообще, единственный нормальный и переносимый способ реализовать обзор папок - это использование связки компонентов TDriveComboBox и TDirectoryListBox со вкладки Win 3.1 (наверное, присутствующиx во всех версиях Delphi)
PM MAIL   Вверх
pankerstein
Дата 6.1.2007, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 16.11.2006
Где: г. Белгород

Репутация: нет
Всего: нет



Может подобный топик есть, хотя я не нашёл... и всёже.

Недавно довелось использовать код из "DRKB", для печати stringGrid, однако он не выводит на печать (у меня не вывел) 0-й столбец.

Я Переделал его, добавив прорисовку ячеек таблицы, более удобное расположение заголовка таблицы, в качестве параметров процедуре можно передать отступ от края и сверху листа в миллиметрах. Также снабдил код комментариями. (я сам новичёк в программировании, и будь в том коде комменты, разобрался бы куда легче чем пришлось).

Надеюсь кому нибудь пригодится...

Код

procedure PrintGrid(sGrid: TStringGrid;
left_StandOff,top_StandOff:integer; sTitle: string);
var
  X1, X2,PixelsX,PrinterCoordX: Integer;
  Y1, Y2,PixelsY,PrinterCoordY: Integer;
  I: Integer;
  F: Integer;
  TR: TRect;
begin
    { left_StandOff - отступ в миллиметрах слева от края листа
      top_StandOff - отступ в миллиметрах сверху от края листа
      PrinterCoordX и PrinterCoordY - тот же отступ только в пикселах
      Высота строк и ширина столбцов взяты соответственно 150 и 400,
    при желании их размер можно передать в процедуру как параметры
    }
    //получаем информацию о разрешении принтера
    PixelsX:=GetDeviceCaps(printer.Handle,LogPixelsX);//разрешение по Х
    PixelsY:=GetDeviceCaps(printer.Handle,LogPixelsY);//разрешение по Y
    PrinterCoordX:=round(PixelsX/25.4*left_StandOff);//переводим мм в пиксели
    PrinterCoordY:=round(PixelsY/25.4*top_StandOff); //---
    with printer do
    begin
      //Печатаем заголовок таблицы
      Title := sTitle;
      BeginDoc; // Начало печати
      Canvas.Pen.Color  := 0;               // цвет-чёрный
      Canvas.Font.Name  := 'verdana';       // шрифт
      Canvas.Font.Size  := 10;              // размер шрифта
      Canvas.Font.Style := [];
      //Текс заголовка в заданных координатах
      Canvas.TextOut(PrinterCoordX, PrinterCoordY-100-
        printer.Canvas.Font.Size*10, Printer.Title);
      Canvas.Pen.Color  := 0;
      Canvas.Font.Name  := 'Verdana';
      Canvas.Font.Size  := 8;         
    end;
    for i:=0 to sgrid.colcount-1 do         //перебираем столбцы
      for f:=0 to sgrid.rowcount-1 do       //перебираем в столбце все строки
      begin
         X1 := PrinterCoordX+i*400;       //400-это ширина столбца
         X2 := PrinterCoordX+400+i*400;   //тоже
         Y1:=PrinterCoordY+f*150;         //150-высота строки
         y2:=PrinterCoordY+150+f*150;     //тоже
         TR:=Rect(x1,y1,x2,y2);
         with printer do
         begin
           Canvas.MoveTo(x1,y1);//Двигаем рисовалку в верхний левый угол таблицы
           {пишем надпись в квадрате(ячейке) i-столбеца и f-строки со сдвигом
           от верха на Y+50 и со сдвигом от левого края колонки на X+50
           }
           Canvas.TextRect(TR, X1 + 50, Y1 + 50, sGrid.Cells[i,f]);
           //рисуем линии ячейки
           Canvas.LineTo(x1,y2);
           Canvas.LineTo(x2,y2);
           Canvas.LineTo(x2,y1);
           Canvas.LineTo(x1,y1);
         end;
      end;
    Printer.EndDoc;  // конец печати
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
 PrintGrid(StringGrid1,20,20, 'Таблица1: "Название"');
end;


 smile Всех с наступающим рождеством!
PM WWW   Вверх
Alexeyt
Дата 19.1.2007, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 15.9.2006
Где: около Москвы

Репутация: нет
Всего: 2



Печать изображения:

- печатаются любые типы графики: битмепы, метафайлы и иконки
- параметры: масштабирование, центрирование, число страниц и т.д.

Можно включить его в KB?

Код здесь:
http://forum.vingrad.ru/index.php?showtopi...t&p=1004718


Это сообщение отредактировал(а) Alexeyt - 20.1.2007, 20:57
PM WWW   Вверх
Akella
Дата 24.1.2007, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата(Atos @  3.1.2007,  15:16 Найти цитируемый пост)
По поводу статьи DRKB "Как вывести диалог Обзор папок ":

предлагаю такой:
Код


Uses ... ShlObj, ...

  private
    { Private declarations }
    sx:String;
...

function TfmOptions.Selectdir(const str: string): string;

function BrowseCallbackProc(hwnd: HWND; uMsg: UINT; lParam: LPARAM; lpData:LPARAM): integer; stdcall;
begin
 Result := 0;
 if uMsg = BFFM_INITIALIZED then begin
 SendMessage(hwnd, BFFM_SETSELECTION, 1, LongInt(PChar(fmOptions.sx)))
 end;
end;

var
 TitleName : string;
 lpItemID : PItemIDList;
 BrowseInfo : TBrowseInfo;
 DisplayName : array[0..MAX_PATH] of char;
 TempPath : array[0..MAX_PATH] of char;
 begin
   Result:='';
   sx:=str;
   FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
   BrowseInfo.hwndOwner := Application.Handle;
   BrowseInfo.pszDisplayName := @DisplayName;
   TitleName := 'Выберите папку...';
   BrowseInfo.lpszTitle := PChar(TitleName);
   BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS or $0040 or BIF_EDITBOX or BIF_STATUSTEXT;
   BrowseInfo.lpfn := @BrowseCallbackProc;
   lpItemID := SHBrowseForFolder(BrowseInfo);

   if lpItemId <> nil then begin
     SHGetPathFromIDList(lpItemID, TempPath);
     Result:=StrPas(TempPath);
     GlobalFreePtr(lpItemID);
   end;
 (*
  //////////////////////////////////////////////////////////////////////
  ---  bi.ulFlags флаги, которые задают режим отображения диалога:-----
  /////////////////////////////////////////////////////////////////////

  BIF_BROWSEFORCOMPUTER - Возвратить только компьютеры.
    Если пользователь выбрал что-то отличное от компьютеров, то кнопка OK останется серой.

  BIF_BROWSEFORPRINTER - Возвратить только принтеры. Если пользователь выбрал что-
     то отличное от принтеров, то кнопка OK останется серой.

  BIF_RETURNONLYFSDIRS - Возвратить только папки файловой системы.
     Если пользователь выберет папки, которые не являются частью файловой системы,
     то кнопка OK останется серой. Это необходимо для того если ваша программа не
     работает с виртуальными папками вроде "Панель управления".

  BIF_BROWSEINCLUDEFILES - Диалог просмотра будет отображать файлы вместе с директориями.

  BIF_DONTGOBELOWDOMAIN - Не включать сетевые папки Доменного уровня ниже,
     чем в TreeView контроле.
  BIF_RETURNFSANCESTORS - В качестве выбора допустимы только объекты,
     представленные в файловой системе.
  BIF_STATUSTEXT - Включает область статуса в блок диалога. Функция может
     установить текст посылая сообщения блоку диалога.
  BIF_EDITBOX - В диалоговом окне будет присутствовать строка редактирования,
    таким образом пользователь может набрать имя элемента.
  BIF_VALIDATE - Если пользователь введёт неверное имя в строке редактирования,
    то диалоговое окно вызовет функцию обратного вызова приложения по сообщению BFFM_VALIDATEFAILED.

  ResPidl := SHBrowseForFolder(BI);
*)

end;


//использование
dbeArcSended.Text := IncludeTrailingPathDelimiter(Selectdir(ParamStr(0)));

PM MAIL   Вверх
CatATonik
Дата 25.1.2007, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 12.1.2007
Где: Москва

Репутация: 6
Всего: 8



В Delphi 2006 появилось много расширений языка, в том числе перегрузка операторов, "Class-like" записи. Что позволяет создавать собственные типы данных (не классы, а именно типы значения)! Для демонстрации этих возможностей я написал тип TDate для работы с датами. 
Код находится приаттаченом файле (код сырой и возможны ошибки, но новые возможности демонстрируются хорошо). А вот пример его использования:

Код

procedure TForm1.Button1Click(Sender: TObject);
var
  Date: TDate;
begin
  Label1.Caption := Date.Text;
  Date := TDate.Today;
  Label2.Caption := Date.Text;
  Dec(Date);
  Label3.Caption := Date.Text;
  Label4.Caption := IntToStr(TDate.Today - Date);
  Date := Now;
  Label5.Caption := Date.Format('DD MMM YYYY');
  Date := MaxInt;
  Label6.Caption := Date.Text;
  Date.ISODate := '2009-11-25';
  Label7.Caption := Date.Text;
  Date.Year := 1993;
  Label8.Caption := Date.Text;
end;


P.S. На очереди создание типа Decimal для вычислений с фиксированной точностью (как в БД).


Это сообщение отредактировал(а) CatATonik - 25.1.2007, 11:54

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  DateType.pas 11,32 Kb
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1137 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.