Как получить информацию о форматировании строки/части строки на которой установлена каретка или выделено?
Как добавить форматирование не предусмотренное RichEdit (отступ от края, задать списки и тд)? Понятно что rtf разметкой, но куда ее слать?
Как сделать отступы от краев (ну и сверху и снизу)?
Думал если нельзя отредактировать элемент, то привязать к внешнему скролбару, убрав в настройках стандартный и задать отступы лаяутом, но хз как привязать.
И еще раз по разметке. Когда просто начинаешь работать с редактором то расстояние между строками стандартное:
А если открыт файл rtf, то расстояние между строками увеличивается, при том и для новых строк:
Но это похоже к вопросу куда слать остальные настройки разметки.
Схема:
Make(delphi)
ver(4.05 build 186)
Add(Button,6088890,259,406)
{
Left=105
Top=320
Width=235
Height=50
link(onClick,1962361:doData,[(310,412)(310,370)])
}
Add(MainForm,2953706,21,105)
{
Width=827
Height=441
Color=16777215
Position=1
}
Add(Edit,6007281,133,455)
{
Left=160
Top=335
Width=355
}
Add(ChildPanel,3318256,203,203)
{
@Hint=#7:Toolbar|
@Color=16755285
link(onEvent1,9425348:doUndo,[])
link(onEvent2,9425348:doRedo,[])
link(onEvent3,9425348:doFormatSel,[(338,223)(338,195)])
link(onEvent4,9425348:doSetFocus,[(338,230)(338,223)])
link(Data1,9425348:RichEdit,[(209,191)(342,191)(342,239)(475,239)])
link(Data2,9425348:Handle,[(216,191)(349,191)(349,239)(482,239)])
AddHint(-120,22,51,13,@Hint)
}
BEGIN_SDK
Add(EditMulti,5708489,21,21)
{
EventCount=11
WorkCount=2
DataCount=2
VarCount=2
Width=909
Height=655
link(Var2,7277792:CurrentColor,[(34,336)(195,336)])
}
Add(Panel,4415339,42,42)
{
Width=811
Height=28
Align=2
Color=16777215
WinStyle=1
Layout="parent.main"
WidthScale=100
HeightScale=11
BorderWidth=0
BevelInner=0
BevelWidth=0
}
Add(ToolBar,11082432,756,588)
{
Top=80
Width=46
Height=22
Color=16777215
Wrapable=1
Buttons=[''=[ZIP3604000078DA73F235636100033320D600620128666450804840E591C1FF5148326CC1116E2071744C897E52DD40AC5E42FAF1B991907E5CE611E37F7C7691E2B751483C0400A89AD624],''=[ZIP3603000078DA73F235636600033320D600620128666490804840E591C17F86FFC300B590E8114CF5401164448CE1A4AA47D642A4F9702DF8DD8FA606AB81B85C3BC21100C6F2D61A],''=[]]
Point(doColor)
link(onClick,10422307:doEvent,[])
}
Add(IndexToChanel,10422307,805,588)
{
}
Add(FontBox,8317766,301,364)
{
Left=60
Width=150
Height=21
Font=[Segoe UI,8,0,0,1]
SelFont="Segoe UI"
link(onResult,11288039:doWork2,[])
}
Add(ColorBox,7277792,189,63)
{
Left=264
Width=60
Height=21
Font=[MS Sans Serif,2,0,0,1]
Layout="Loy2"
TypeListColors=1
ItemHeight=18
link(onClick,4049309:doData,[])
}
Add(DoData,4049309,238,63)
{
Data=String(0)
link(onEventData,16343502:doWork2,[])
}
Add(ComboBox,12950858,336,308)
{
Left=212
Width=50
Height=21
Font=[MS Sans Serif,10,0,0,1]
Strings=#1:8|1:9|2:10|2:11|2:13|2:15|2:17|2:19|2:21|2:23|2:25|2:27|2:29|2:31|2:33|2:35|2:37|2:39|2:41|2:43|2:45|2:47|2:49|2:51|2:53|2:55|2:57|2:59|2:61|2:63|2:65|2:67|2:69|2:71|2:73|2:75|2:77|2:79|2:81|2:83|2:85|2:87|2:89|2:91|2:93|2:95|2:97|3:100|3:125|3:150|3:175|3:200|3:225|3:250|3:275|3:300|0:|
Text="10"
link(onClick,11288039:doWork1,[(380,321)])
}
Add(InlineCode,9130332,294,455)
{
WorkPoints=#11:doFormatSel|
DataPoints=#7:PHandle|8:FontName|8:FontSize|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|0:|12: PHandle,|10: Color,|10: Style,|13: FontName,|24: FontSize: THI_Event;|4: |58: procedure doFormatSel(var _Data: TData; Index: word); |5: end;|0:|14:implementation|0:|34:procedure THiAsmClass.doFormatSel;|3:var|21: sControl: PControl;|10: p: byte;|12: s: string;|13: i: integer;|0:|5:begin|48: sControl := PControl(ToIntegerEvent(PHandle));|38: if not Assigned(sControl) then exit;|2: |64: if (sControl.SelLength ‹› 0) then {no valid selection -› quit}|7: begin|82: sControl.RE_CharFmtArea := raSelection; {apply attribute(s) only to selection}|58: sControl.RE_FmtFontColor := ReadInteger(_Data, Color);|0:|35: p := ReadInteger(_Data, Style);|39: sControl.RE_FmtBold := p and 1 › 0;|41: sControl.RE_FmtItalic := p and 2 › 0;|44: sControl.RE_FmtUnderline := p and 4 › 0;|37: s := ReadString(_Data, FontName);|20: if s ‹› '' then|35: sControl.RE_FmtFontName := s;|43: i := ReadInteger(_Data, FontSize) * 20;|20: if i ‹› 0 then |36: sControl.RE_FmtFontSize := i; |6: end;|4:end;|0:|4:end.|
link(PHandle,5708489:Data1,[(300,172)(27,172)])
link(FontName,8317766:CurrentFont,[])
link(FontSize,12950858:String,[(314,404)(349,404)])
}
Add(DoData,4926556,245,455)
{
link(onEventData,9130332:doFormatSel,[])
}
Add(HubEx,11288039,376,364)
{
Angle=1
link(onEvent,4926556:doData,[(380,395)(233,395)(233,461)])
}
Add(ButtonRush,9303883,91,21)
{
Width=24
Height=24
ColorTo=16777215
BorderColor=16777215
ColorFromOver=15780518
Caption=""
Glyphs=[''=[ZIP3604000078DA73F235636100033320D600620128666450804840E591C1FF5148326CC1116E2071744C897E52DD40AC5E42FAF1B991907E5CE611E37F7C7691E2B751483C0400A89AD624],''=[ZIP3604000078DA73F235636100033320D600620128666450804840E591C1FF5148326CC1116E2071744C897E52DD40AC5E42FAF1B991907E5CE611E37F7C7691E2B751483C0400A89AD624],'Bitmap'=[ZIP3604000078DA73F235636100033320D600620128666450804840E591C1FF5148326CC1116E2071744C897E52DD40AC5E42FAF1B991907E5CE611E37F7C7691E2B751483C0400A89AD624]]
link(onClick,5708489:onEvent1,[])
}
Add(ButtonRush,16569831,133,28)
{
Left=24
Width=24
Height=24
ColorTo=16777215
BorderColor=16777215
ColorFromOver=15780518
Caption=""
Glyphs=[''=[ZIP3604000078DA73F235636600033320D600620128666490804840E591C17F86FFC300B590E8114CF5401164448CE1A4AA47D642A4F9702DF8DD8FA606AB81B85C3B8A4634040030CB55A9],''=[ZIP3604000078DA73F235636600033320D600620128666490804840E591C17F86FFC300B590E8114CF5401164448CE1A4AA47D642A4F9702DF8DD8FA606AB81B85C3B8A4634040030CB55A9],'Bitmap'=[ZIP3604000078DA73F235636600033320D600620128666490804840E591C17F86FFC300B590E8114CF5401164448CE1A4AA47D642A4F9702DF8DD8FA606AB81B85C3B8A4634040030CB55A9]]
link(onClick,5708489:onEvent2,[])
}
Add(ButtonRush,10197097,427,476)
{
Left=440
Width=24
Height=24
ColorTo=16777215
BorderColor=16777215
ColorFromOver=15780518
Caption=""
Glyphs=[''=[ZIPF606000078DA73F235636600033320D600620128666490804800E58FF041300CFCA70B60200220AB5F450440567F050720D53DD4F26F28110059BD16118016E18F4B3D31614E4CF8E38A0B52D3C3000206B200EDCC196C805ABE181EA1319A7EE80C005061D23F],''=[ZIP3604000078DA73F235636600033320D600620128666490804800E58FF041300CFCA70B60200220AB5F450440567F050720D53DD4F26F28110059BD16118016E18F4B3D31614E4CF8E38A0B52D3032D93E6C88600EBF5B441],'Bitmap'=[ZIP3604000078DA73F235636600033320D600620128666490804800E58FF041300CFCA70B60200220AB5F450440567F050720D53DD4F26F28110059BD16118016E18F4B3D31614E4CF8E38A0B52D3032D93E6C88600EBF5B441]]
link(onClick,16428166:doEvent1,[])
}
Add(ButtonRush,2004117,427,518)
{
Left=464
Width=24
Height=24
ColorTo=16777215
BorderColor=16777215
ColorFromOver=15780518
Caption=""
Glyphs=[''=[ZIPF606000078DA73F235636600033320D600620128666490804800E58FF041300CFCA70B60200220AB5F450440567F850840897B4805A1440064F55A4480D1F01F10C04016A09D39830D50CB17C3233446D30F9D0100E7F8B457],''=[ZIP3604000078DA73F235636600033320D600620128666490804800E58FF041300CFCA70B60200220AB5F450440567F850840897B4805A1440064F55A4480D1F0A74DD21CD91000C6699659],'Bitmap'=[ZIP3604000078DA73F235636600033320D600620128666490804800E58FF041300CFCA70B60200220AB5F450440567F850840897B4805A1440064F55A4480D1F0A74DD21CD91000C6699659]]
link(onClick,13546278:doEvent1,[])
}
Add(ButtonRush,9247618,427,560)
{
Left=488
Width=24
Height=24
ColorTo=16777215
BorderColor=16777215
ColorFromOver=15780518
Caption=""
Glyphs=[''=[ZIPF606000078DA73F235636600033320D600620128666490804800E58FF041300CFCA70B60200220AB5F4504C065D7151C8054B751E2DF502200B27A2D2200ADE302977A62C2FF0A118092F4308080812C403B73061BA0962F8647688CA61F3A03001E4ED23F],''=[ZIP3604000078DA73F235636600033320D600620128666490804800E58FF041300CFCA70B60200220AB5F4504C065D7151C8054B751E2DF502200B27A2D2200ADE302977A62C2FF0A118092F440CBA439B22100B9E2B441],'Bitmap'=[ZIP3604000078DA73F235636600033320D600620128666490804800E58FF041300CFCA70B60200220AB5F4504C065D7151C8054B751E2DF502200B27A2D2200ADE302977A62C2FF0A118092F440CBA439B22100B9E2B441]]
link(onClick,12609769:doEvent1,[])
}
Add(KeyEvent,5284092,504,483)
{
Code=76
Ctrl=1
link(Handle,8591610:Var2,[])
}
Add(Hub,16428166,476,476)
{
link(onEvent1,8713718:doWork2,[])
link(onEvent2,5284092:doPress,[])
}
Add(KeyEvent,8194314,504,525)
{
Code=69
Ctrl=1
link(Handle,3207450:Var1,[(510,475)(501,475)(501,425)])
}
Add(Hub,13546278,476,518)
{
link(onEvent1,8713718:doWork3,[(557,524)])
link(onEvent2,8194314:doPress,[])
}
Add(HubEx,8713718,553,476)
{
link(onEvent,6642673:doWork2,[])
}
Add(KeyEvent,11339097,504,567)
{
Code=82
Ctrl=1
link(Handle,8591610:Var1,[(510,507)(501,507)(501,446)])
}
Add(Hub,12609769,476,560)
{
link(onEvent1,6642673:doWork3,[(571,566)])
link(onEvent2,11339097:doPress,[])
}
Add(HubEx,6642673,567,476)
{
link(onEvent,5708489:onEvent4,[(751,482)(751,48)])
}
Add(GetDataEx,3207450,504,420)
{
link(Data,5708489:Data2,[(510,186)(34,186)])
}
Add(GetDataEx,8591610,504,441)
{
link(Data,3207450:Var2,[])
}
Add(ButtonRush,8264596,308,98)
{
Left=330
Width=24
Height=24
ColorTo=16777215
BorderColor=16777215
ColorFromOver=15780518
Caption=""
Glyphs=[''=[ZIPF606000078DA73F235636600033320D600620128666490804800E58FF041300CFC1F4660D5AA550C48808383232F2FEFE3C78FF8D5CBC8C8848686868484282929313333777474E0570F540CE13E79F204C8B5B5B5C5AFDED2D212C858B97265414101905B565646A4FB81405757F7E5CB97C4B8DFCFCF8F9B9B5B4747E7C58B1744BABFAAAA0AC85DBF7E3D31EE5FBC78B18989090B0BCB91234788743F3B3BBBAFAFEFA74F9F70A97FFCF8F12A24B063C78EB76FDF0EB644C54016A09D3943317CE869CE68FA19EA2146120000E8AB0C02],''=[ZIP3604000078DA73F235636600033320D600620128666490804800E58FF041300CFC1F4660D5AA550C48808383232F2FEFE3C78FF8D5CBC8C8848686868484282929313333777474E0570F540CE13E79F204C8B5B5B5C5AFDED2D212C858B97265414101905B565646A4FB81405757F7E5CB97C4B8DFCFCF8F9B9B5B4747E7C58B1744BABFAAAA0AC85DBF7E3D31EE5FBC78B18989090B0BCB91234788743F3B3BBBAFAFEFA74F9F70A97FFCF8F12A24B063C78EB76FDFD23BD1308C6C0800CBFDEDF5],'Bitmap'=[ZIP3604000078DA73F235636600033320D600620128666490804800E58FF041300CFC1F4660D5AA550C48808383232F2FEFE3C78FF8D5CBC8C8848686868484282929313333777474E0570F540CE13E79F204C8B5B5B5C5AFDED2D212C858B97265414101905B565646A4FB81405757F7E5CB97C4B8DFCFCF8F9B9B5B4747E7C58B1744BABFAAAA0AC85DBF7E3D31EE5FBC78B18989090B0BCB91234788743F3B3BBBAFAFEFA74F9F70A97FFCF8F12A24B063C78EB76FDFD23BD1308C6C0800CBFDEDF5]]
link(onClick,2444501:doData,[])
}
Add(ButtonRush,14797015,308,133)
{
Left=354
Width=24
Height=24
ColorTo=16777215
BorderColor=16777215
ColorFromOver=15780518
Caption=""
Glyphs=[''=[ZIPF606000078DA73F235636600033320D600620128666490804800E58FF041300CFC1F468001155CB97285BAEA81E0EBD7AFC2C2C25C5C5C6FDEBC21D25515151540C3DBDBDB89547FFCF8717E7E7E7373F30F1F3E10A3FEDBB76F5656569C9C9C478F1E25D28AF5EBD7333232060404FCFBF78FA0E263C78E050606323333B3B0B0040505858686E257BF6AD52AB480C5AFFEF1E3C7AB50C1604E544402DA9933C8331DD9BE181EA1319A7EE80C005A913F0B],''=[ZIP3604000078DA73F235636600033320D600620128666490804800E58FF041300CFC1F468001155CB97285BAEA81E0EBD7AFC2C2C25C5C5C6FDEBC21D25515151540C3DBDBDB89547FFCF8717E7E7E7373F30F1F3E10A3FEDBB76F5656569C9C9C478F1E25D28AF5EBD7333232060404FCFBF78FA0E263C78E050606323333B3B0B0040505858686E257BF6AD52AB480C5AFFEF1E3C7AB50017D13CDC88600DCE0210D],'Bitmap'=[ZIP3604000078DA73F235636600033320D600620128666490804800E58FF041300CFC1F468001155CB97285BAEA81E0EBD7AFC2C2C25C5C5C6FDEBC21D25515151540C3DBDBDB89547FFCF8717E7E7E7373F30F1F3E10A3FEDBB76F5656569C9C9C478F1E25D28AF5EBD7333232060404FCFBF78FA0E263C78E050606323333B3B0B0040505858686E257BF6AD52AB480C5AFFEF1E3C7AB50017D13CDC88600DCE0210D]]
link(onClick,4549980:doData,[])
}
Add(ButtonRush,14869135,308,168)
{
Left=378
Width=24
Height=24
ColorTo=16777215
BorderColor=16777215
ColorFromOver=15780518
Caption=""
Glyphs=[''=[ZIPF606000078DA73F235636600033320D600620128666490804800E58FF041300CFCA717D0D2D262C00142434331D5EFD8B163150E70ECD8315CB6FCFBF7EFF9F3E7D7AF5FBF71E3C6AB57AF805C3C4EFAF9F3675B5B9B9A9A1A2B2B2B070787B6B6F69C3973FEFCF9834BFDB265CBD8D8D8545555EBEBEB4B4A4AA4A5A57979794F9C38814BBD9999999898D89D3B7720DCCB972F0B0808B8B9B9E152CFC2C2929898882CE2EBEB0BB411977A60D0656565218B0043124F9C0E75F5030218C802B43367B0016AF9627884C668FAA1330000A4B913AC],''=[ZIP3604000078DA73F235636600033320D600620128666490804800E58FF041300CFCA717D0D2D262C00142434331D5EFD8B163150E70ECD8315CB6FCFBF7EFF9F3E7D7AF5FBF71E3C6AB57AF805C3C4EFAF9F3675B5B9B9A9A1A2B2B2B070787B6B6F69C3973FEFCF9834BFDB265CBD8D8D8545555EBEBEB4B4A4AA4A5A57979794F9C38814BBD9999999898D89D3B7720DCCB972F0B0808B8B9B9E152CFC2C2929898882CE2EBEB0BB411977A60D0656565218B0043124F9C0E75F534010C231B02007350F59F],'Bitmap'=[ZIP3604000078DA73F235636600033320D600620128666490804800E58FF041300CFCA717D0D2D262C00142434331D5EFD8B163150E70ECD8315CB6FCFBF7EFF9F3E7D7AF5FBF71E3C6AB57AF805C3C4EFAF9F3675B5B9B9A9A1A2B2B2B070787B6B6F69C3973FEFCF9834BFDB265CBD8D8D8545555EBEBEB4B4A4AA4A5A57979794F9C38814BBD9999999898D89D3B7720DCCB972F0B0808B8B9B9E152CFC2C2929898882CE2EBEB0BB411977A60D0656565218B0043124F9C0E75F534010C231B02007350F59F]]
link(onClick,15951044:doData,[])
}
Add(ButtonRush,11384071,308,203)
{
Left=402
Width=24
Height=24
ColorTo=16777215
BorderColor=16777215
ColorFromOver=15780518
Caption=""
Glyphs=[''=[ZIPF606000078DA73F235636600033320D600620128666490804800E585B9211806FE0F6E70E2C489CCCC4C5F5FDFA0A0A0FEFEFE77EFDEE157FFFDFBF70B172E282A2A8686863E7FFEFCEFDFBFB854FEFBF7EF2F0CD8DADA969797C3B958D53F7AF4681F0C18181844474743D8FBF7EFFFF4E913A6FA67CF9E9D86016363E3C4C44438F7CB972FF87DE1E0E0505555855FCD3F30C0548FCBFDAF5EBD020608440B5CFDCF9F3F2F5DBAF4E3C70F4CF5C78F1F9F3D7B36D0D72F5EBCB0B2B2CACFCF0732CE9C39535959F9FEFD7B4CF5172F5EACAFAF9F3F7FFEB265CB2A2A2ADADADA962E5D3A61C284969696CF9F3FFF1FB280812C403B738662F8D0D39CD1F433D4438C240000A5FA581F],''=[ZIP3604000078DA73F235636600033320D600620128666490804800E585B9211806FE0F6E70E2C489CCCC4C5F5FDFA0A0A0FEFEFE77EFDEE157FFFDFBF70B172E282A2A8686863E7FFEFCEFDFBFB854FEFBF7EF2F0CD8DADA969797C3B958D53F7AF4681F0C18181844474743D8FBF7EFFFF4E913A6FA67CF9E9D86016363E3C4C44438F7CB972FF87DE1E0E0505555855FCD3F30C0548FCBFDAF5EBD020608440B5CFDCF9F3F2F5DBAF4E3C70F4CF5C78F1F9F3D7B36D0D72F5EBCB0B2B2CACFCF0732CE9C39535959F9FEFD7B4CF5172F5EACAFAF9F3F7FFEB265CB2A2A2ADADADA962E5D3A61C284969696CF9F3F0FDE14C630B221002D4D3A21],'Bitmap'=[ZIP3604000078DA73F235636600033320D600620128666490804800E585B9211806FE0F6E70E2C489CCCC4C5F5FDFA0A0A0FEFEFE77EFDEE157FFFDFBF70B172E282A2A8686863E7FFEFCEFDFBFB854FEFBF7EF2F0CD8DADA969797C3B958D53F7AF4681F0C18181844474743D8FBF7EFFFF4E913A6FA67CF9E9D86016363E3C4C44438F7CB972FF87DE1E0E0505555855FCD3F30C0548FCBFDAF5EBD020608440B5CFDCF9F3F2F5DBAF4E3C70F4CF5C78F1F9F3D7B36D0D72F5EBCB0B2B2CACFCF0732CE9C39535959F9FEFD7B4CF5172F5EACAFAF9F3F7FFEB265CB2A2A2ADADADA962E5D3A61C284969696CF9F3F0FDE14C630B221002D4D3A21]]
link(onClick,9806155:doData,[])
}
Add(ChildPanel,11486214,112,616)
{
}
BEGIN_SDK
Add(EditMulti,4152236,21,21)
{
}
Add(Panel,5211733,35,105)
{
Left=432
Top=2
Width=4
Height=22
Color=16777215
BevelInner=1
}
END_SDK
Add(ChildPanel,13428770,49,616)
{
}
BEGIN_SDK
Add(EditMulti,5529272,21,21)
{
}
Add(Panel,13646372,35,105)
{
Left=52
Top=2
Width=4
Height=22
Color=16777215
BevelInner=1
}
END_SDK
Add(DoData,2444501,350,98)
{
Data=String(1)
link(onEventData,16343502:doWork3,[(403,104)])
}
Add(HubEx,16343502,399,63)
{
link(onEvent,9529608:doWork2,[])
}
Add(DoData,4549980,350,133)
{
Data=String(2)
link(onEventData,9529608:doWork3,[(410,139)])
}
Add(HubEx,9529608,406,63)
{
link(onEvent,7550564:doWork2,[])
}
Add(DoData,15951044,350,168)
{
Data=String(4)
link(onEventData,7550564:doWork3,[(417,174)])
}
Add(HubEx,7550564,413,63)
{
link(onEvent,4154785:doWork2,[])
}
Add(DoData,9806155,350,203)
{
Data=String(8)
link(onEventData,4154785:doWork3,[(431,209)])
}
Add(HubEx,4154785,427,63)
{
link(onEvent,5708489:onEvent3,[(597,69)(597,41)])
}
END_SDK
Add(RichEdit,9425348,441,154)
{
Left=50
Top=15
Width=495
Height=530
Font=[Segoe UI,10,0,0,204]
Ctl3D=0
WinStyle=1
Layout="loy2"
WidthScale=100
HeightScale=100
FileName="000.rtf"
Strings=#26:Брюс Стерлинг. Схизматрица|1: |6:ПРОЛОГ|1: |106:Яркие самолетики миновали продольную ось мира. Линдсей, любуясь, следил за ними, утопая по колено в траве.|226:Хрупкие, словно воздушные змеи, педальные самолетики то ныряли, то взмывали высоко вверх в зоне невесомости. За ними, на другом конце мира, искривленный ландшафт сверкал желтизной пшеничных и пятнистой зеленью хлопковых полей.|480:Линдсей прикрыл ладонью глаза — сквозь стеклянные панели в мир хлестали потоки яркого солнечного света. Самолет с синими крыльями из материи, разрисованными под птичьи, пересек один из таких световых столбов и теперь парил, постепенно снижаясь. Линдсей различил вьющиеся по ветру русые волосы авиаторши, крутившей педали, чтобы набрать высоту, и понял, что она тоже его заметила. Захотелось крикнуть, помахать ей рукой, но при свидетелях этого ни в коем случае делать было нельзя.|192:Тюремщики уже были рядом — собственные его супруга и дядюшка. Пожилые аристократы с натугой переставляли ноги. Дядюшкино лицо побагровело так, что старику пришлось даже усилить сердечный ритм.|51:— Ты… бежал! — выдохнул наконец старик. — Ты бежал!|113:— Я просто решил размяться, — вызывающе вежливо отвечал Линдсей. — Мышцы здорово застоялись под домашним арестом.|217:Прикрыв глаза сложенной козырьком ладонью, испещренной старческими веснушками, дядюшка проследил направление его взгляда. Пестрый аппаратик парил над Хлябями — пораженным гниением участком сельскохозяйственной панели.|106:— Хляби разглядываешь? Где работает твой дружок Константин? Говорят, он как-то связывается с тобой оттуда.|57:— Он специализируется по насекомым, а не по криптографии.|85:Линдсей лгал. Тайные сообщения Константина были единственным его источником новостей.|204:После раскрытия заговора Линдсея заточили под домашний арест в стенах фамильной усадьбы, а Филипу Константину как инженеру по экологии не нашлось подходящей замены, и его решили оставить на рабочем месте.|420:Нервы домашнего арестанта, пока он томился в усадьбе, здорово сдали. Линдсей чувствовал себя человеком лишь там, где мог найти применение своим навыкам дипломата. Он сильно похудел; над резко выделившимися скулами мрачно блестели глаза. Темные, по моде завитые волосы растрепались от бега. Высокий рост, благородный лоб, волевой подбородок, само его безупречное сложение были характерными фамильными признаками Линдсеев.|276:Супруга его, Александрина Линдсей, взяла мужа под руку. Одета она была в модную плиссированную юбку и белоснежную медицинскую куртку. Здоровый вид ее не выказывал, однако же, настоящей жизненной силы — лицо словно из вощеной бумаги, уложенные с помощью лака завитки на висках.|124:— Джеймс, — обратилась она к старику, — вы же обещали! Зачем опять — о политике? Абеляр, ты такой бледный. Чем-то расстроен?|158:— Я? Расстроен? — Навыки дипломатии, усвоенные у шейперов, заработали: кожа порозовела, зрачки слегка расширились, губы сложились в открытую белозубую улыбку.|42:Дядюшка, недовольно насупившись, отступил.|35:Александрина оперлась на руку мужа.|39:— Не делай так больше. Ты меня пугаешь.|169:Она была старше Линдсея на пятьдесят лет и недавно прошла операцию, заменив коленные чашечки на тефлоновые механистские протезы, но колени явно беспокоили ее до сих пор.|221:Линдсей переложил книгу из руки в руку. Под домашним арестом он коротал время, переводя на современный солярноорбитальный английский пьесы Шекспира. Родственники одобряли — чем бы дитя ни тешилось, только бы не политикой.|125:Даже позволили лично передать рукопись в Музей. И такая поблажка на несколько часов вывела его из заточения в четырех стенах.|107:Музей был рассадником оппозиции. Там были друзья, презервационисты, как называли они свою небольшую группу.|0:|115:Реакционная молодежь, вдохновленная романтикой искусства и культуры прошлого. Они превратили Музей в свою цитадель.|231:Мир их назывался Корпоративной орбитальной республикой Моря Ясности. Заселенная почти двести лет назад, эта лунная орбитальная станция была одним из старейших космических поселений с устоявшимися традициями и собственной культурой.|420:Однако ж ветры перемен, дующие с молодых, энергичных миров Пояса астероидов и Колец Сатурна, проникли и сюда. Не миновали этого тихого города-государства и отзвуки Бессистемной великой войны между двумя сверхдержавами шейперов и механистов. В результате население Республики раскололось на презервационистов, к которым принадлежал Линдсей, и радикальных старцев. Плебеи поднялись на борьбу с процветающими аристократами.|377:Власти Республики держали сторону механистов. Радикальные старцы, каждому — далеко за сто, правили прямо из клиник, будучи неразрывно связаны с медицинской аппаратурой механистов. Лишь импортируемые технологии протезирования еще позволяли им жить. Республика погрязла в долгах, но расходы на медицину росли год от года. Мир все больше и больше зависел от механистских картелей.|330:Шейперы тоже не обходили Республику своим вниманием и своим арсеналом соблазнов. Несколько лет назад Линдсей с Константином прошли у них курс обучения, и именно это сделало друзей первыми в своем поколении. Молодежь, не в силах смириться с принесением в жертву механистским выгодам своих законных прав, встала на сторону шейперов.|94:Социальная напряженность достигла той стадии, когда взрыв может вызвать самая крохотная искра.|75:Предметом спора была сама жизнь. Аргументом же в этом споре служила смерть.|78:Запыхавшийся дядюшка тронул свой пульт-браслет, уменьшая частоту сердцебиения.|142:— Постарайся обойтись без этих выходок, — сказал он. — Нас ждут, и воздержись там, в Музее, от риторики. Ничего, кроме заранее согласованного.|77:Линдсей поднял взгляд. Птицеподобный самолет в стремительном пике несся вниз.|14:— Не-е-е-ет!!!|28:Отшвырнув книгу, он побежал.|135:Аппарат рухнул в траву близ открытого амфитеатра с каменными скамьями. Крылья его, конвульсивно дрожа, возвышались над грудой обломков.|13:— Ве-е-ера!!!|335:Когда он вытащил ее из путаницы стоек и растяжек, она еще дышала, но была без сознания. Изо рта и носа шла кровь. Ребра явно были сломаны. Рванув ворот ее костюма, Линдсей сильно поранил руку проволокой — костюм, по моде презервационистов, имитировал старинный космический скафандр. Его гофрированные рукава были смяты и залиты кровью.|116:Облачко белых крохотных мотыльков поднялось над травой. Они суетились в воздухе, словно притягиваемые запахом крови.|116:Смахнув с Вериного лица мотылька, Линдсей прижался губами к ее губам. Пульсирующая жилка на шее замерла. Все. Конец.|51:— Вера, любимая моя, — прошептал он. — Ты все-таки…|99:Обхватив голову руками, он рухнул в траву. Боль утраты смешалась в нем с восхищением силой ее духа.|176:Вера решилась на то, о чем они часто беседовали — в Музее, ночами, в постели, после воровской близости. Самоубийство как средство борьбы. Последнее средство выражения протеста.|136:Черная бездна распахнулась перед внутренним взором Линдсея. Путь к свободе… Но неожиданно в душе взметнулась бурная волна любви к жизни.|45:— Что ж, любовь моя… Сейчас, подожди немного…|65:Он поднялся на колени. К нему, побелев лицом, уже спешил дядюшка.|56:— Этот твой поступок… Отвратительно! — выкрикнул старик.|38:Линдсей одним прыжком вскочил на нога:|20:— Отойди! Не трогай!|67:— Старик застыл над телом покойной, не сводя с нее выпученных глаз.|62:— Проклятый дурак!.. Она умерла! Ей было всего двадцать шесть!|125:Линдсей выдернул из рукава, собранного в тугие складки на локте и у запястья, грубо выкованный нож и приставил к своей груди.|96:— Во имя вечных человеческих ценностей… Во имя гуманизма… Выбираю по собственной свободной воле…|148:Старик схватил его за запястье. После короткой схватки нож выпал из руки Линдсея. Дядюшка поднял нож и положил в карман лабораторной рабочей куртки.|100:— А это, — прохрипел он, — нарушение закона. И за незаконное хранение оружия тебе придется отвечать.|140:— Хоть я и в ваших руках, — ухмыльнулся Линдсей, — вы не сможете помешать мне умереть. А сейчас или чуть позже — какая, собственно, разница…|162:— Ф-фанатик, — с отвращением выплю