Вверх ↑
Ответов: 297
Рейтинг: 4
#1: 2019-02-27 19:35:46 ЛС | профиль | цитата
andrestudio писал(а):
Но так как с иконкой никто помочь не вызвался то принципиально оставляю его себе.

Могу нарисовать, скажите что и как и сделаю, правда не разу для hiasm ничего не рисовал, но пару вариантов смогу показать.

Что я делаю не так ?!
Add(MainForm,11821139,735,301)
{
Width=464
Height=302
}
Add(Edit,8673961,812,385)
{
Left=95
Top=10
Width=180
Text="Demo1.xls"
}
Add(Button,3544816,588,441)
{
Left=70
Top=100
Width=260
Height=25
Caption="Auto creator data file"
link(onClick,6665458:doEvent1,[])
}
Add(InlineCode,14243757,847,441)
{
WorkPoints=#28:doCreateXLS=Создаёт файл XLS|49:doCloseXLS=Закрывает файл после добавления данных|76:doAddData=Добавляет данные в таблицу согластно типа данных (данные в потоке)|
EventPoints=#5:onErr|
DataPoints=#22:FileName=Имя файла XLS|16:Row=Номер строки|17:Col=Номер колонки|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|3: |0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|3: |21: FStream: PStream;|17: fname:string;|23: FileName:THI_Event;|18: Col:THI_Event;|18: Row:THI_Event;|20: onErr:THI_Event;|3: |72: procedure XlsBeginStream(var XlsStream: PStream; BuildNumber: Word);|47: procedure XlsEndStream(XlsStream: PStream);|53: procedure XlsWriteInteger(var XlsStream: PStream;|51: ACol, ARow: Word;|51: AValue: Integer);|50: procedure XlsWriteReal(var XlsStream: PStream;|48: ACol, ARow: Word;|47: AValue: Double);|0:|52: procedure XlsWriteString(var XlsStream: PStream;|50: ACol, ARow: Word;|52: AValue: string); |3: |50: procedure doCreateXLS(var dt:TData; idx:word);|49: procedure doCloseXLS(var dt:TData; idx:word);|48: procedure doAdddata(var dt:TData; idx:word);|0:|5: end;|0:|14:implementation|0:|3:var|58: CXlsBof: array[0..5] of Word = ($809, 8, 00, $10, 0, 0);|43: CXlsEof: array[0..1] of Word = ($0A, 00);|57: CXlsLabel: array[0..5] of Word = ($204, 0, 0, 0, 0, 0);|56: CXlsNumber: array[0..4] of Word = ($203, 14, 0, 0, 0);|52: CXlsRk: array[0..4] of Word = ($27E, 10, 0, 0, 0);|6: |37:procedure THiAsmClass.XlsBeginStream;|5:begin|28: CXlsBof[4] := BuildNumber;|44: XlsStream.Write(CXlsBof, SizeOf(CXlsBof));|4:end;|0:|35:procedure THiAsmClass.XlsEndStream;|5:begin|44: XlsStream.Write(CXlsEof, SizeOf(CXlsEof));|4:end;|0:|38:procedure THiAsmClass.XlsWriteInteger;|15:var V: Integer;|5:begin|20: CXlsRk[2] := ARow;|20: CXlsRk[3] := ACol;|42: XlsStream.Write(CXlsRk, SizeOf(CXlsRk));|27: V := (AValue shl 2) or 2;|24: XlsStream.Write(V, 4);|4:end;|0:|35:procedure THiAsmClass.XlsWriteReal;|5:begin|24: CXlsNumber[2] := ARow;|24: CXlsNumber[3] := ACol;|50: XlsStream.Write(CXlsNumber, SizeOf(CXlsNumber));|42: XlsStream.Write(AValue, SizeOf(Double));|4:end;|0:|37:procedure THiAsmClass.XlsWriteString;|12:var L: Word;|5:begin|22: L := Length(AValue);|24: CXlsLabel[1] := 8 + L;|23: CXlsLabel[2] := ARow;|23: CXlsLabel[3] := ACol;|20: CXlsLabel[5] := L;|48: XlsStream.Write(CXlsLabel, SizeOf(CXlsLabel));|39: XlsStream.Write(Pointer(AValue)^, L);|4:end;|0:|34:procedure THiAsmClass.doCreateXLS;|5:begin|50: fname := ReadString(dt,FileName, 'C:\Demo.xls');|39: FStream := NewWriteFileStream(fname);|29: XlsBeginStream(FStream, 0);|4:end;|0:|33:procedure THiAsmClass.doCloseXLS;|5:begin|24: XlsEndStream(FStream);|15: FStream.Free;|4:end;|0:|32:procedure THiAsmClass.doAdddata;|16:var stmp:string;|17: itmp:integer;|14: rtmp:real;|16: r,c:integer;|16: tmpdt:TData;|5:begin|34: r := ReadInteger(tmpdt, Row, 0);|34: c := ReadInteger(tmpdt, Col, 0);|22: case dt.Data_type of|20: data_str: begin|38: stmp := ToString(dt);|50: XlsWriteString(FStream,c,r,stmp);|19: end;|20: data_int: begin|39: itmp := ToInteger(dt);|51: XlsWriteInteger(FStream,c,r,itmp);|19: end;|20: data_real: begin|36: rtmp := ToReal(dt);|48: XlsWriteReal(FStream,c,r,rtmp);|19: end;|57: else _hi_onEvent(onErr, 'Error type add'); |6: end;|4:end;|0:|4:end.|
link(onErr,1231733:doMessage,[])
link(FileName,8673961:Text,[(853,429)(818,429)])
link(Row,751937:Var2,[])
link(Col,751937:Var3,[(867,425)])
}
Add(Hub,6665458,651,441)
{
OutCount=4
link(onEvent1,14243757:doCreateXLS,[])
link(onEvent2,13033422:doData,[(709,454)(709,356)])
link(onEvent3,14243757:doCloseXLS,[(756,461)(756,454)])
link(onEvent4,12326381:doMessage,[])
}
Add(Message,12326381,777,462)
{
Message="End create file"
}
Add(StrList,1942388,854,301)
{
Strings=#25:Строка для ячейки номер 1|25:Строка для ячейки номер 2|25:Строка для ячейки номер 3|25:Строка для ячейки номер 4|25:Строка для ячейки номер 5|25:Строка для ячейки номер 6|25:Строка для ячейки номер 7|25:Строка для ячейки номер 8|25:Строка для ячейки номер 9|26:Строка для ячейки номер 10|
}
Add(Memory,6490426,854,385)
{
Default=Integer(0)
}
Add(DoData,13033422,854,350)
{
Data=String(Строка для ячейки номер 1)
link(onEventData,14243757:doAddData,[(941,356)(941,488)(835,488)(835,461)])
link(Data,1942388:Text,[])
}
Add(Message,1231733,973,441)
{
}
Add(GetDataEx,751937,854,420)
{
link(Data,6490426:Value,[])
}


Результат, либо пустая форма, либо:




Типа такого ?! Можно внутри закрасить, вместо прозрачности.

Слишком тонкий какой-то, сейчас еще сделаю парочку.
Во вкладке "Инструменты" - "Конверторы" - есть TableToRTF, можно вместо RTF написать XLS и готово
Ну или что-то похожее нарисовать, фантазии не хватает чуток.

Вот толстый в интернете нашел, чуть переделал.
xls.ico


- этот на скриншете выше.
- это более широкий и чистый, думаю будет красивее, чем выше.
карма: 1

0
Редактировалось 8 раз(а), последний 2019-02-27 22:01:57