Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.15;
Скачать: CL | DM;

Вниз

3-ри ВОПРОСА К МАСТАКАМ-МАСТЕРАМ!   Найти похожие ветки 

 
Man-In-Red ©   (2002-06-26 20:18) [0]

У меня есть три вопроса, помогите пожалуйста!
1. Есть задачка:
Есть компоненты StringGrid и PrintDialog…
Нужно как-то распечатать содержимое stringgrid’а без разметки – только текст, и чтобы перед печатью можно было вызвать окно компонента PrintDialog , чтобы указать число копий, страниц и т. д…
Можно как-то вставить текст из StrGrid’а в QuickRep, или еще куда-нибудь, я просто плохо знаю компоненты со вкладки Qreport…
Есть идейка на крайний случай – вставить содержимое StringGrid’а в RichEdit, так будет проще распечатать и без разметки, но тут есть одно НО: Нужно будет как-то выровнять текст чтобы он выглядел таблицей, а как?
В общем такая трабла!
И два вопроса есть еще:
1. Как сохранить содержимое StringGrid’а в файл?
2. Как загрузить содержимое StringGrid’а из файла?
Если есть какие-нибуть идеи, очень прошу поделитесь!
Заранее благодарен!


 
Man-In-Red ©   (2002-06-26 21:43) [1]

Помогите пожалуйста


 
Stelius ©   (2002-06-26 21:44) [2]

Если тебе необходимо, чтобы в файле StringGrid имел вид таблицы (как в текстовых редакторах), то с этим я тебе помочь не смогу, а вот для сохранения значений воспользуйся, например, ini-файлом:

[SG]
Cell1_1=<значение в ячейки 1,1>
Cell1_2=<значение в ячейки 1,2>
...


 
Man-In-Red ©   (2002-06-27 00:25) [3]

А есть ли какой-нибудь попроще способ?
А то это сильно сложно что-то – там столбцов 100, и 4 ряда – долго будет…
Буду очень благодарен за помощь!


 
Song ©   (2002-06-27 08:56) [4]

Вопрос про печать с решением был на раньше чем вчера. Про загрузку и сохранение, поищите, я уверен, найдёте. Если не найдёте, пришлю.


 
Stelius ©   (2002-06-27 20:40) [5]

Сделай в цикле:


var
MyIni : TIniFile;
begin
MyIni := TIniFile.Create(<имя_файла>);
for i := 0 to StringGrid1.ColCount do begin
for j := 0 to StringGrid1.RowCount do begin
MyIni.WriteString("SG", "Cells" + IntToStr[i] + "_" +
IntToStr(j), <строка_из_ячейки_i,j>);
end;
end;
MyIni.Free;
end;


Вместо WriteString можно WriteInteger, WriteFloat и т.д., смотря, что нужно.


 
Man-In-Red ©   (2002-06-28 02:17) [6]


> Song © (27.06.02 08:56)

Я сначала ищу сам перед тем как вопрос в форум ставить…
Не нашел, пришлите пожалуйста на мыло: man-in-red@mail.ru


 
Man-In-Red ©   (2002-06-28 16:01) [7]

Ну допустим как сохранить мы разобрались… а как тогда загрузить информацию с ini файла (я с ними никогда не работал)?
Буду очень благодарен!


 
Мастер Денис   (2002-06-28 18:54) [8]

А не проще твой StringGrid в Excel перегнать?


 
Бурундук   (2002-06-28 19:09) [9]

Печать:
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1025088873&n=0

А сохранять и читать, я думаю, проще в TStreamFile поэлементно
(в начале записать число колонок и столбцов).


 
Man-In-Red ©   (2002-06-28 19:23) [10]


> Бурундук (28.06.02 19:09)

В этом примере нельзя указывать количество копий…. А это мне надо!


А с сохранением мы уже разобрались… пример сверху…а теперь как мне по такому же принципу загрузить данные в StringGrid?


 
Stelius ©   (2002-06-28 20:09) [11]

Для загрузки используй:
var
MyIni : TIniFile;
begin
MyIni := TIniFile.Create(<имя_файла>);
for i := 0 to StringGrid1.ColCount do begin
for j := 0 to StringGrid1.RowCount do begin
StringGrid1.Cells[i,j] := MyIni.ReadString("SG", "Cells" +
IntToStr[i] + "_" + IntToStr(j),
<значени_если_не_найдено_поле_например_"">);
end;
end;
MyIni.Free;
end;

Аналогично есть ReadInteger, ReadFloat и т.д.


 
Stelius ©   (2002-06-28 20:11) [12]

Для загрузки используй:

var
MyIni : TIniFile;
begin
MyIni := TIniFile.Create(<имя_файла>);
for i := 0 to StringGrid1.ColCount do begin
for j := 0 to StringGrid1.RowCount do begin
StringGrid1.Cells[i,j] := MyIni.ReadString("SG", "Cells" +
IntToStr[i] + "_" + IntToStr(j),
<значени_если_не_найдено_поле_например_"">);
end;
end;
MyIni.Free;
end;

Аналогично есть ReadInteger, ReadFloat и т.д.


 
Man-In-Red ©   (2002-06-28 20:23) [13]

Спасибо…
Но остается еще один вопрос!
Тут есть пример печати с StringGrid’а:
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1025088873&n=0 Но там невозможно выставить число копий…
Как это сделать?
И может, даже лучше, как-то по-другому печатать StringGrid, с использованием компонентов типа PrintDialog и PrintSetupDialog? Или как-то там Printer.BeginDoc… Printer.Canvas(…)…Printer.EndDoc…


 
eheyler   (2002-06-29 15:09) [14]

Да что же может быть проще?

if PrintDialog.Execute then
begin
for i := 0 to PrintDialog.Copies-1 do
begin
Printer.BeginDoc;
K := Printer.Canvas.Font.PixelsPerInch /
Canvas.Font.PixelsPerInch*1.2;

PrintStringGrid(StrGrid,
K, // zoom
200, // left margin
200, // top margin
200 // bottom margin
);

Printer.EndDoc;
end;
end;



Страницы: 1 вся ветка

Текущий архив: 2002.07.15;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.016 c
1-47277
nnn_nsk
2002-06-27 13:54
2002.07.15
Работа с датами


7-47815
aleksander
2002-04-18 17:25
2002.07.15
Блокировка клавиатуры из сервиса


1-47400
vixic
2002-07-02 17:21
2002.07.15
Обращение к DLL


3-47235
RIPer
2002-06-20 16:33
2002.07.15
Алиас


1-47331
cosinus
2002-06-26 13:34
2002.07.15
Помогите найти более логичное решение