Вверх ↑
Разработчик
Ответов: 26113
Рейтинг: 2126
#1: 2018-12-23 01:14:34 ЛС | профиль | цитата
andrestudio, ты на меня бочку катил, а ведь сам до конца в вопросе не разобрался. Вот решение твоей задачи без всяких плясок с бубном вокруг IC-генератора. Но это решение нам не пойдет, тк получить имя этого шрифта крайне сложно, необходимо парсить память ресурса согласно спецификации конкретного типа шрифта, а вот API функций для этого мелкомягкие не придумали. Частичные решения можно найти, но там код еще тот геморрой.

Схема

Add(MainForm,7277142,413,175)
{
Width=607
Height=243
link(onCreate,14924510:doEvent1,[])
}
Add(Label,16477492,735,238)
{
Left=50
Top=15
Width=477
Height=90
Color=0
Font=[Microsoft Sans Serif,8,0,65280,204]
Ctl3D=0
WinStyle=4
Caption="23:07 ABCDEF"
AutoSize=1
Alignment=2
Point(doFont)
}
Add(Button,15395408,406,245)
{
Left=55
Top=150
Caption="test"
link(onClick,8808342:doWork2,[])
}
Add(InfoTip,10171156,623,210)
{
Info=#9:Digital-7|0:|0:|0:|0:|0:|15:нужно правильно|18:указать имя шрифта|
Width=106
Height=123
}
Add(InlineCode,5187536,616,154)
{
WorkPoints=#6:doInit|
EventPoints=#6:FCount|
DataPoints=#7:FStream|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses kol,windows,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|26: MemFontHandle: HFONT;|9: public|24: FStream: THI_Event;|28: FCount: THI_Event; |34: destructor Destroy; override;|51: procedure doInit(var _Data:TData; Index:word);|5: end;|156: function AddFontMemResourceEx(p1: Pointer; p2: DWORD; p3: PDesignVector; p4: LPDWORD): THandle; stdcall; external 'gdi32.dll' name 'AddFontMemResourceEx';|117: function RemoveFontMemResourceEx(p1: THandle): BOOL; stdcall; external 'gdi32.dll' name 'RemoveFontMemResourceEx'; |1: |14:implementation|0:|31:destructor THiAsmClass.Destroy;|5:begin|68: if MemFontHandle <> 0 then RemoveFontMemResourceEx(MemFontHandle);|12: inherited;|4:end;|0:|58:procedure THiAsmClass.doInit(var _Data:TData; Index:word);|3:var|13: St:PStream;|19: FontCount: dword;|5:begin|31: St := ToStreamEvent(FStream);|24: if St = nil then exit;|77: MemFontHandle := AddFontMemResourceEx(St.Memory, St.size, nil, @FontCount);|33: _hi_onEvent(FCount, FontCount);|4:end;|2: |6:end. |
link(FCount,13867454:doString,[])
link(FStream,6100711:Stream,[])
}
Add(Check,349451,539,196)
{
Caption="auto"
link(onEvent,8808342:doWork1,[(599,202)])
}
Add(HubEx,8808342,595,245)
{
link(onEvent,899655:doFont,[])
}
Add(Font,899655,644,245)
{
Font=[digital-7,48,0,65535,1]
link(onFont,16477492:doFont,[])
}
Add(MemoryStream,6100711,616,98)
{
Stream=[ZIPA82B000078DAC59A7F6C5BD775C7CF7DFC2189FA41512445FDA41E45FDA02D899428CB925DB991134959627B662A2793D2D43123D19262FD2A45CB769A745EDA0585966EF96358FBCF5274F0D615FBC5AC45A0A941E6626B11746DA1B96951B46A910145D7ED8FC4DDDA022B32B2DFFB834F8F122DB38000897ABCE7DE7BDE7DE77CCEBDE7DD473C6244E4A49B64A195F31391E8EC89AD1788D875B45E8A3D74F6C2B7FEECDDB3445D2BA81F9F5E8CAFB066ED3922AD14F557A7D7527ACDD315A788BC31D4672EAFCC2E86FEE3DDAFA3FFAF895C6FCDC65757C8476538FF12FAAB67176E5CFED50FFFE53CF4DF41F5277389F84CE6F1CFFC29FADEE7E3CFA1C1E6D5FE13D73F867ADBDC62EA7AC9E7B47F44FDFBA8871796A7E3475EEA816DDE2FA3DEBD18BFBEA27DA106BA6C12757D29BE9848FDC0A31375FC2B91F5DCCAF26A8A5E63495CDF83FEB32BC9C4CAAB3FFFC9E3441EEECF8F88FB8EE3CC7FFDDBF0D3CEE15F52B515BE127DADFCDC5D5E7EBFDFF6290A41E59BDA16AAE5A491FCC339169DDE82F00BF487D837C548E63F4DB478E92895A87A298DD08B5C70BD255A2CEC17EC15B291A6BDA1ADA3FE27B2645FA328B39071294268F2473F7DF6C204C6EAA1716983E593F415523A18E30D4E425816E307DD817DCF732BD5E788F8BE839E90E9232C524793BADE53A83151B7E27A4415F04183DC45613A49A7683C9B456B172CE945ED74369BFD6EF6EDEC77B2FF9EFDF62E1E767A506836297A9AB89215DEDBC1A71433C401BA155429FAABD4594EAA2617D5909B10BD119BCD6AD1A87B6D4C4F5BDAC782F1B9BAE0DCA5D19E6EA32EABBABE91BD3D54F3DA083B3EC46BE991A19A343BCE1B7BBA597A7C4D7F18678EC7E7F4497E627028ADB57385C4D054CF0639BACF6C50796CF235C6FE786A8365FF7083469BFF09B6599EBE88EE720C38363F9A669750A9E846C3D100A4CA6E7D1C638D7F683238A5AFEBEB8FCCACEBE3FA5C7C266D6D17253A12EB53113D4D1393F3F8BE3019488F4C351A62626AEA24C6A9E2E358C538EB5318E15935C2B362040CF0FF5072769F81E11DB1C9C726D337471BD323A3538D81803E96BE1D9B4CDF1E6D0C4C7147AA0D4B51BE305FA76C76C1E6EAA3106AE4281393E991C6344DADAFCB5A3090BEB9BEDEB80E3F547D836EEF6A60B4BB6144356C901811E1D8603763A2EB6630D028E213080660E7D428AEEDEE3E333139064B03DC52CFFEC8BD66E4B530DF2B90FB0E08795D31C8EB8B42DE501879236C6EE0C89B0E1179731E72FFFEC85BCCC87598DF2290070E08796B31C88345216F2B8CBC1D36B771E41D8788BC330F79687FE447CCC88FC2FC230279D70121EF2E06794F51C8C385914760739823EF3D44E47D79C8A3FB23EF37233F06F3FB05F28103427EBC18E48345211F2A8CFC046C1EE2C84F1E22F20FE4211FDE1FF92933F20FC2FC5302F90307847CA418E4A78B42FE6061E40FC1E60739F2D143443E96877C7C7FE40F9B91FF0ECC7F58207FE480903F5A0CF23345213F5B18F939D87C9623FFDD43447E3E0F796C7FE48F99917F08E63F26904F1C10F20BC5207FBC28E44F1446FE7BB0F9098E7CF210914FE5217F727FE41F36237F0AE67F5820FFC80121BF580CF2A78B427EA930F2386CBEC4913F7388C8A7F390CFEC8F3C61467E19E62704F2D903423E570CF2F9A2903F5B18F915D8FC2C47BE7088C817F3902FED8F7CD98C7C05E62F0BE41F3D20E4C96290AF16853C5518F955D89CE2C8D70E11F9B53CE4D7F7477EC38CFC39987F4320FFD801217FBE18E42F1485FCE38591FF3E6CFE38477EF31091FF413EF22ECC741C33389EC411C3318E631847144708871F870787A36BA4AAB1B1A1A1BC9C3122A7738C7D9A07696D6C6EB4EE4B5AF938757DC942FCDBCAF8B74DB4D8454B89682975F2EF32213B447B85902B85669590AB858E4B7CD78876B7F8F6885EAFF8AE15BD3E21D789EF7AAE033BCCFFFC17B8AFB04FD0196D5CB313591E63DFCEBEC2FE5CEB45BB97AAD889ECCBD9B1EC17E875FA28FB2E8B65AF302BBD4B2FD3197C5EA54FD0DFD28BD404394E55D44F8F52ED3D3E44C3F4042DB15236CCBEA10D6BB72CC72CDFB364ACAFDB9EB2BD64FB7BFB59FB7F970C97BC59AA972689518CDE64B7B41A72D2039CFA265931C02CE85AAB37A8746B830865F91601776483B4C826D9A84428D8D04150284159B1D5DBE71E18F479FB7D25416F49E740B073F04E28F464EE9FBDF2A4A9C67FE58BB111764BFCC6E9E4D7A54DF13BE86C576F1FF395043A07D9F3A150E67D7E6628140AC95F06EFE0AB15165BC8276DE58DB3FC5C8B30BAB72F101CE867ADB1584CFCAE98FB75D64E15E4221FE805E91FE4DC6A833336EED0F626DCB191E6AA398156B85209972AD153BEBD41D590CBD1E646E9465B25640F640F30F88CB3B846DD96EC6DDC92609A516A2803AA6CDFA61C397EAADF2058BEB54995DC0431945F5C6C1396FAC987164EC365074F77A0A373B0DFE6026277B0F3F860C006CA2EDBC060ADCF55C2363C8E90DF91793BE488DDCDDCF60CDF7D2FE608B1AECCFF0C7BD8057FC8E161173D999FA1F74EE6C75C93593DC36F6A4DE89979132AD6ED3BD0CFFCCC431A7BDE60564911BE063711161B7D44995BA2FC2957A5731B33C30AC5B248CED6539AC9A8BC8BBF9CBB0C06CCC5C686745A8D59DB4C7F2923E3C760FCCADA96C45181B2027507E26181EC409B4DCDCB2644CFCE7F8416F0788F5369D4A0ACC1591546F436C5D2909AFC5C1F5A9B50B6F0C89463181E995AAA13A59C8B9B9837762A17A7D489418DD9C9C3113085C3A222919BB5DD99D7E131ABCAFC85110D876021A67366253F0A991F1B64F2D954500D2C6AA12B32127E74F348F85524C89840447E98B9096529C9BE7AC530207DACC4C95CA54194DC473E189FBE2E283688C99DF3D0669E77AE823E8E9866DD1E17A3E609A7F5EE72D29AE7A30B362DCAE8D79BA25F5F2D5760355FAB2AFA2272DB66EFE5BCAC54751E771FCA063E2F3D7CDA4476A2E9220779D4AA32F9C8CC4B29CFB9CCFBC602CA738ACD6DA3A3F5D705E7B38C5933FDDDCE7CD6223255FA4D1EB994472E359FF96A2AD9CEAD2E1E538D4A44245D46D6C19990BD90BD111E48B3068F35EF6D5229B92517F3591173B7695EE762BE092BDD54B797888CBA3B60249A8231F767FE9747FD91CCDBC3F70CBACC2FA65C2CF9F870E556FA6749286822143465DBDF8E50EDD60E073E8BDC7C16F0691DE16E9A35FD5BB237A048B5994935E765801D526EF4978B25D6CAA37B2F662225B0FB80E3291AA9615F7A7B7234EE71474CF733376479614BDEE21459D7635E8EB9ECCB2EE62FC29282313942DF913BAFA3A69578749FA8F05517DADE9B8F424546C6AC698E0C1F2B883284B2CB9CBF9AA9AD40FEDA8990BC8DD76FF148B5DD275205EEA5F70AD8DE7B6A1141DB36E5757B811CD1465F95B4DB4DB4DBF7C912824A01DAC1FB640AB386395390A2CED75D47FE5DA2A5E05DA2455C8247A1E5DE99C3551CD622889A928899A526F782D83B5B308F23E6DDA0F4C90A53996066EC0EF946CF6AEC125DB99D622CC65E89C93163F41EF6A4EF883D894FED4AED546ACA073BDEE6ED51ADAA7C87DBFF79B561DD9BF3FCD49EDB7F7698E2DDA1D648EDAEFB5C7381FB5C15CA2AE8D5AABD8E13D1ADC1C59A45746D6A9D92DA91F27ACB96D4E66BA91965E7B6DACB07C4A9F579D9AE5E5C82EF50EBA9666F742D7BE20AB9A3D335981F5ECFEEC0666E17B8875EDC13D9182F59DDAEDCE4C0FED04B8D14A0CE1CBD90891ECF0F7694F6089FC1925E875A2DBC2C5325DF47DAD54EA1434D66BB5A2FA4224062E72077EF5CD6954E9BDA1E1DE12BA4134F119C9913B3C4BC57B4A3BD53DC21BCE8719AE85954AA1908F872EC7CDE12AF8F3F28416160B03FC72F863C73178F46A021D8453D9EA8DF1DCA7C35F69EDA39BE9E4B31D1D0B082E78FFED4E3F1FC34EABFF3EB50D4AFF656B74CECCEE49EECECC6931DA762CDA3209E4FE43AA9569EF1ADB5CDF0A85A787484193B5FF36DEE9669BF9B776B2B782B33AD0D2B6C74AAF8FE918C6E6B44E6BE56F580C923ADABC8EA2ADAA476C0BA5A1BA4D606CF6B9E6DB9BBAF56F7995C8EF388DC093F03C85EDCBF32782C23D84C01E1A7132D65C2CFC1FBC62C74EF588DDF3748C63EFF96E919A8912664A41C48183C52E6271AEE5185F028EF79C555F079651363B9A8D634074D4F2C85B627DDF78A5FE107965C1CADBB7CF0D198F4008FF5C6236E85CA447CAE39C55D89E40359CE8B9CF5D5CAFA9CCDED3B86BA77E519B389B19DE472D7B02DF359239990CE5E32DE36FA246B37DED3AA613F32DEC82A653F57B2C5D46E35C9363A6E8C524151F6374AE66F201D37DE697A8A1E5532C3FCFA2B25F337A3D24AB698DAAD5465C836E4DC2F2B993F7D7F4BC9A5B86FE4C62C43541F577205F43FADE44A3A4D3F50B29B1CAC91BF9D652D436D03FE4A59FA2B65E9AF942DA6762B3519B20D3EFE9F92EDD4A07529B994868D31CBA8957D40C99289942BE9456D4CC992CF13A4531F85A9171F9DCED334A550F65254B4F7D34948C7F02DFBA3A21CC2D107B91F3D031863102D271E4A26E2A9C48CFECC0D7D62FEB9C4D29565FDF442E27A7C6926910CEB5FD4A3BDBD43FA44EAC642A267308CAE053D393F3B975AD59389D544722D3113D6E752A9959391C8B56BD7C2AB5C7135B196580A4F2F2F8ECECFCEA7E20B3D83FAB9E5A5E5BE706FAF7E7E3AA5F7F6EB7DFD27A3C74EA2CE8737D4B8D6783291B8164F26F4CBCB497D25915C5D5E8A2FE8575713E14AC7389A30EC6222393D2F1BF59585441CC5F4F252EA2A86BEBA1AEEED8BF61F1B383E3874821EA22425280E34099A018667E806BE27689E9E43CB125DA165D44FD3026AD7A1B704AD04CE09A3F58B266CFC9C14CEE57A3DC01656672DA04C62B4599A43FFAAA82550F231D6C435B926EF4BD10A8211C1E79AF884A1951B91EBAF097BC208E3322DD2A818731E1A7168F02BEA740E3D4B380A05BD7FDFA0EF1D2D37D6B8B037017BE242D2E9325A932857840FAB422F2EFCBC2AEC0C632AF29F76A596B47651E84EE30A664D3EC682A02F6BD362AC147AA5D55C2B2CD7B2F8CB7E0AC316FAF3624DF37713F9BCF72243FBB097AEA70664E426DC6774ECF9DBA903BB08FEB625CF06FCBDC96A62D9AC7AA392A70E2B7F5373B9497B830DECCC49F997BB8C6C97AF76FE0698F0CB54]
}
Add(Hub,14924510,476,189)
{
link(onEvent1,5187536:doInit,[(501,195)(501,160)])
link(onEvent2,349451:doWork,[])
}
Add(FormatStr,13867454,672,154)
{
DataCount=1
Mask="Добавлено шрифтов -- %1"
link(onFString,4902642:doText,[])
}
Add(StatusBar,4902642,735,154)
{
}

карма: 22

0
Редактировалось 6 раз(а), последний 2018-12-23 01:25:42