Форум: "Основная";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.011 c