Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.013 c
6-47627
LiNkS
2002-04-24 13:57
2002.07.15
NetSessionEnum


3-47144
Jony
2002-06-18 16:03
2002.07.15
Работа с картинками *.jpg в Delphi/MS SQL


3-47078
AlexNG
2002-06-20 16:26
2002.07.15
Создание Lookup поля в runtime


1-47516
rumata_lee
2002-07-04 16:59
2002.07.15
QReport


6-47628
нету логина...
2002-05-02 20:42
2002.07.15
TSocket... надо передать Canvas по сети... ПОМОГИТЕ!!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский