<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=64106&amp;view=findpost&amp;p=443423</guid>
        <pubDate>Fri, 27 Aug 2004 17:26:27 +0000</pubDate>
        <title>Пишем текстовой редактор</title>
        <link>https://forum.sources.ru/index.php?showtopic=64106&amp;view=findpost&amp;p=443423</link>
        <description><![CDATA[miksayer: Давайте добавим в нашу программу функцию выбора цвета текста.<br>
Все очень просто. Кидаем на форму Common Dialog и называем его<br>
<strong class='tag-b'>CD3</strong>. Теперь пора добавить меню <strong class='tag-b'>mnuColor</strong>. Пишем<br>
код для него:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;</div><div class="code_line">Private Sub mnuColor_Click()</div><div class="code_line">CD3.ShowColor &#39;Вызываем диалог выбора цвета</div><div class="code_line">txtMain.ForeColor=CD3.Color </div><div class="code_line">End Sub</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
В программу еще можно добавить много функций. Например, можно<br>
добавить тулбар, только при этом нужно учитывать его при изменении<br>
размеров формы. Пример для этой статьи я выложу позже.]]></description>
        <author>miksayer</author>
        <category>Разное (кодинг)</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=64106&amp;view=findpost&amp;p=442419</guid>
        <pubDate>Thu, 26 Aug 2004 18:55:32 +0000</pubDate>
        <title>Пишем текстовой редактор</title>
        <link>https://forum.sources.ru/index.php?showtopic=64106&amp;view=findpost&amp;p=442419</link>
        <description><![CDATA[miksayer: Давайте немного усовершенствуем нашу программу, добавим поиск и выбор шрифта.<br>
Добавим меню <strong class='tag-b'>mnuFind</strong>(<em class='tag-i'>Caption = Поиск</em>).<br>
Пишем код для mnuFind:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;</div><div class="code_line">frmFind.Show </div></ol></div></div></div></div><br>
Теперь добавим форму <strong class='tag-b'>frmFind</strong>(<em class='tag-i'>BorderStyle = 1</em>). На форму кидаем<br>
текстовое поле <strong class='tag-b'>txtFind</strong> и кнопку <strong class='tag-b'>cmdFind</strong>(<em class='tag-i'>Caption = Поиск</em>).<br>
Объявим переменную:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Dim P As Integer</div></ol></div></div></div></div><br>
Пишем код для события Form_Load:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">P = 1</div></ol></div></div></div></div><br>
Потом код кнопки:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;</div><div class="code_line">Private Sub cmdFind_Click()</div><div class="code_line">If InStr(P, frmMain.txtMain.Text, txtFind.Text) &#60;&#62; 0 Then</div><div class="code_line">&#39; Если искомое слово присутствует то...</div><div class="code_line">frmMain.txtMain.SetFocus </div><div class="code_line">&#39; Текстовое поле с главным текстом получает фокус:)</div><div class="code_line">frmMain.txtMain.SelStart = InStr(P, frmMain.txtMain.Text, txtFind.Text) - 1 </div><div class="code_line">&#39;Начинаем выделять слово...</div><div class="code_line">frmMain.txtMain.SelLength = Len(txtFind.Text) &#39; Завершаем выделение</div><div class="code_line">P = InStr(P, frmMain.txtMain.Text, txtFind.Text) + Len(txtFind.Text) </div><div class="code_line">&#39; Изменяем переменную на позицию курсора</div><div class="code_line">frmFind.WindowState = 1</div><div class="code_line">Else &#39; Если в тексте больше нет искомого слова, то выводим об этом сообщение.</div><div class="code_line">MsgBox &quot;Искомое слово не найдено&quot;</div><div class="code_line">End If</div><div class="code_line">End Sub</div></ol></div></div></div></div><br>
Простейший поиск готов&#33;<br>
Теперь сделаем выбор шрифта. На главную форму(<strong class='tag-b'>frmMain</strong>) добавим меню<br>
<strong class='tag-b'>mnuFont</strong> с Caption = Шрифт и Common Dialog с Name = CD2.<br>
Пишем код для этого меню:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;</div><div class="code_line">CD2.Flags = cdlCFBoth Or cdlCFEffects Or cdlCFLimitSize Or cdlCFTTOnly Or dlCFForceFontExist </div><div class="code_line">CD2.Min = 8 &#39;минимальный размер шрифта </div><div class="code_line">CD2.Max = 22 &#39;максимальный размер шрифта </div><div class="code_line">CD2.ShowFont &#39;открываем диалог шрифтов </div><div class="code_line">txtMain.FontName = CD2.FontName </div><div class="code_line">&#39;имя шрифта для текстового поля будет равно выбранному в диалоге </div><div class="code_line">txtMain.FontBold = CD2.FontBold </div><div class="code_line">&#39;таже редиска, но для тольщены (жирный или нет) </div><div class="code_line">txtMain.FontItalic = CD2.FontItalic &#39;~, но для наклона </div><div class="code_line">txtMain.FontStrikethru = CD2.FontStrikethru &#39;~, для зачёркнуттости </div><div class="code_line">txtMain.FontUnderline = CD2.FontUnderline &#39;~, для подчёркнуттости </div><div class="code_line">txtMain.FontSize = CD2.FontSize &#39;собственно размер шрифта</div></ol></div></div></div></div><br>
Все&#33; Мы усовешенствовали нашу программу&#33;]]></description>
        <author>miksayer</author>
        <category>Разное (кодинг)</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=64106&amp;view=findpost&amp;p=442021</guid>
        <pubDate>Thu, 26 Aug 2004 11:20:28 +0000</pubDate>
        <title>Пишем текстовой редактор</title>
        <link>https://forum.sources.ru/index.php?showtopic=64106&amp;view=findpost&amp;p=442021</link>
        <description><![CDATA[miksayer: Эта статья предназначена для новичков, так как проффесиональному программисту не составит труда написать такую программу.<br>
Для начала создадим новый проект, переименуем главную форму в frmMain. Добавим текстовое поле(Name = txtMain,<br>
Multiline = True, ScrollBars = 3). Теперь пишем слюдующий код:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Private Sub Form_Resize()</div><div class="code_line">txtMain.Left=0</div><div class="code_line">txtMain.Top=0</div><div class="code_line">txtMain.Width=Me.Width</div><div class="code_line">txtMain.Height=Me.Height</div><div class="code_line">End Sub</div></ol></div></div></div></div><br>
Теперь при изменении размеров формы изменяется и размер текстового поля. Теперь добавим меню Файл с именем mnuFile и несколько подменю Новый - mnuNew, Открыть - mnuOpen, Сохранить - mnuSave, Сохранить как - mnuSaveAs, Печать - mnuPrint, Выход - mnuExit. Теперь объявим две переменные:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Dim old As Boolean</div><div class="code_line">Dim change As Boolean</div></ol></div></div></div></div>Переменная old будет определять старый ли файл или только, что созданный, а переменная change определяет были ли сделаны изменения в тексте. Теперь добавим Microsoft Common Dialog(Project-&gt;Components), назовем его CD1. Пишем код для mnuSaveAs:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Private Sub mnuSaveAs_Click()</div><div class="code_line">CD1.ShowSave &#39; диалог сохранения файлов</div><div class="code_line">If CD1.FileName &#60;&#62; &quot;&quot; Then &#39; определяем не нажал ли юзер кнопку Отмена</div><div class="code_line">Open CD1.FileName For Output As #1 &#39; открываем файл </div><div class="code_line">Print #1, txtMain.Text &#39; записываем текст из текстового поля</div><div class="code_line">Close #1 &#39; закрываем файл</div><div class="code_line">End If</div><div class="code_line">End Sub</div></ol></div></div></div></div><br>
Вставляем следующий код в событие mnuSave_Click:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">If Old = True Then &#39; определяем был ли открыт файл или его только, что создали</div><div class="code_line">Open CD1.FileName For Output As #1 &#39; открываем файл </div><div class="code_line">Print #1, txtMain.Text &#39; записываем текст из текстового поля</div><div class="code_line">Close #1 &#39; закрываем файл</div><div class="code_line">Else &#39; если файл был только что создан</div><div class="code_line">CD1.ShowSave</div><div class="code_line">If CD1.FileName &#60;&#62; &quot;&quot; Then</div><div class="code_line">Open CD1.FileName For Output As #1 &#39; открываем файл </div><div class="code_line">Print #1, txtMain.Text &#39; записываем текст из текстового поля</div><div class="code_line">Close #1 &#39; закрываем файл</div><div class="code_line">End If</div><div class="code_line">End If</div></ol></div></div></div></div>Далее пишем код для mnuNew, он немного сложноват:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Private Sub mnuNew_Click()</div><div class="code_line">If change = True Then &#39; если были сделаны изменения</div><div class="code_line">Dim Ans</div><div class="code_line">Ans = MsgBox(&quot;Сохранить изменения?&quot;, vbQuestion + vbYesNoCancel, &quot;Текстовой редактор&quot;)</div><div class="code_line">If Ans = vbNo Then</div><div class="code_line">txtMain.Text = &quot;&quot;</div><div class="code_line">old = False</div><div class="code_line">change = False</div><div class="code_line">ElseIf Ans = vbYes Then</div><div class="code_line">&#39;СОХРАНЕНИЕ ФАЙЛА</div><div class="code_line">mnuSave_Click</div><div class="code_line">txtMain.Text = &quot;&quot;</div><div class="code_line">old = False</div><div class="code_line">change = False</div><div class="code_line">End If</div><div class="code_line">Else &#39; если изменений нет</div><div class="code_line">txtMain.Text = &quot;&quot;</div><div class="code_line">old = False</div><div class="code_line">change = False</div><div class="code_line">End If</div><div class="code_line">End Sub</div></ol></div></div></div></div><br>
Примерно тоже самое для mnuOpen:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Private Sub mnuOpen_Click()</div><div class="code_line">If change = True Then</div><div class="code_line">Dim Ans</div><div class="code_line">Ans = MsgBox(&quot;Сохранить изменения?&quot;, vbQuestion + vbYesNoCancel, &quot;Текстовой редактор&quot;)</div><div class="code_line">If Ans = vbNo Then</div><div class="code_line">&#39;ОТКРЫТИЕ ФАЙЛА</div><div class="code_line">CD1.ShowOpen</div><div class="code_line">If CD1.FileName &#60;&#62; &quot;&quot; Then</div><div class="code_line">Open CD1.FileName For Input As #1</div><div class="code_line">Do Until EOF(1)</div><div class="code_line">Line Input #1, txt</div><div class="code_line">AllTxt = AllTxt + txt + vbCrLf</div><div class="code_line">Loop</div><div class="code_line">Close #1</div><div class="code_line">txtMain.Text = AllTxt</div><div class="code_line">old = True</div><div class="code_line">change = False</div><div class="code_line">End If</div><div class="code_line">ElseIf Ans = vbYes Then</div><div class="code_line">&#39;СОХРАНЕНИЕ ФАЙЛА</div><div class="code_line">mnuSave_Click()</div><div class="code_line">&#39;ОТКРЫТИЕ ФАЙЛА</div><div class="code_line">CD1.ShowOpen</div><div class="code_line">If CD1.FileName &#60;&#62; &quot;&quot; Then</div><div class="code_line">Open CD1.FileName For Input As #1</div><div class="code_line">Do Until EOF(1)</div><div class="code_line">Line Input #1, txt</div><div class="code_line">AllTxt = AllTxt + txt + vbCrLf</div><div class="code_line">Loop</div><div class="code_line">Close #1</div><div class="code_line">txtMain.Text = AllTxt</div><div class="code_line">old = True</div><div class="code_line">change = False</div><div class="code_line">End If</div><div class="code_line">End If</div><div class="code_line">Else</div><div class="code_line">&#39;ОТКРЫТИЕ ФАЙЛА</div><div class="code_line">CD1.ShowOpen</div><div class="code_line">If CD1.FileName &#60;&#62; &quot;&quot; Then</div><div class="code_line">Open CD1.FileName For Input As #1</div><div class="code_line">Do Until EOF(1)</div><div class="code_line">Line Input #1, txt</div><div class="code_line">AllTxt = AllTxt + txt + vbCrLf</div><div class="code_line">Loop</div><div class="code_line">Close #1</div><div class="code_line">txtMain.Text = AllTxt</div><div class="code_line">old = True</div><div class="code_line">change = False</div><div class="code_line">End If</div><div class="code_line">End If[/QUOTE]</div><div class="code_line">Еще пишем такой код:</div><div class="code_line">[QUOTE]Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)</div><div class="code_line">If сhange = True Then</div><div class="code_line">Dim Ans</div><div class="code_line">Ans = MsgBox(&quot;Сохранить изменения?&quot;, vbQuestion + vbYesNoCancel, &quot;Текстовой редактор&quot;)</div><div class="code_line">If Ans = vbNo Then</div><div class="code_line">End</div><div class="code_line">ElseIf Ans = vbYes Then</div><div class="code_line">mnuSave_Click</div><div class="code_line">End</div><div class="code_line">Else</div><div class="code_line">Cancel = -1</div><div class="code_line">End If</div><div class="code_line">End If</div><div class="code_line">Код для mnuExit:</div><div class="code_line">Private Sub mnuExit_Click()</div><div class="code_line">If change = True Then</div><div class="code_line">Dim Ans</div><div class="code_line">Ans = MsgBox(&quot;Сохранить изменения?&quot;, vbQuestion + vbYesNoCancel, &quot;Mik HTML Editor&quot;)</div><div class="code_line">If Ans = vbNo Then</div><div class="code_line">End</div><div class="code_line">ElseIf Ans = vbYes Then</div><div class="code_line">mnuSave_Click</div><div class="code_line">End</div><div class="code_line">End If</div><div class="code_line">Else</div><div class="code_line">End</div><div class="code_line">End If</div><div class="code_line">End Sub</div></ol></div></div></div></div><br>
Пишем код для печати текста:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Private Sub mnuPrint_Click()</div><div class="code_line">Printer.Print txtMain.Text</div><div class="code_line">Printer.EndDoc </div><div class="code_line">End Sub</div></ol></div></div></div></div><br>
Мы написали код для всех подменю меню Файл. Теперь добавим меню Правка(Name = mnuEdit) и<br>
 несколько подменю  Отменить - mnuUndo, Вырезать - mnuCut, Копировать - mnuCopy, <br>
Вставить - mnuPaste, Удалить - mnuRemove, Выделить все - mnuSelectAll. Пишем код:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Private Sub mnuCut_Click()</div><div class="code_line">Clipboard.SetText txtMain.SelText</div><div class="code_line">txtMain.Text = &quot;&quot;</div><div class="code_line">End Sub</div><div class="code_line">Private Sub mnuCopy_Click()</div><div class="code_line">Clipboard.SetText txtMain.SelText</div><div class="code_line">End Sub</div><div class="code_line">Private Sub mnuPaste_Click()</div><div class="code_line">txtMain.SelText = Clipboard.GetText</div><div class="code_line">End Sub</div><div class="code_line">Private Sub mnuRemove_Click()</div><div class="code_line">txtMain.SelText = &quot;&quot;</div><div class="code_line">End Sub</div><div class="code_line">Private Sub mnuSelectAll_Click()</div><div class="code_line">txtMain.SelStart = 0</div><div class="code_line">txtMain.SelLength = Len(txtMain.Text)</div><div class="code_line">End Sub</div></ol></div></div></div></div><br>
Теперь объявим API-функцию SendMessage и константу EM_UNDO:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Private Declare Function SendMessage Lib &quot;user32&quot; Alias &quot;SendMessageA&quot; (ByVal hwnd As Long, ByVal wMsg As Long, _</div><div class="code_line">ByVal wParam As Long, lParam As Any) As Long</div><div class="code_line">Private Const EM_UNDO = &amp;HC7</div></ol></div></div></div></div><br>
А вот и код для mnuUndo:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Private Sub mnuUndo_Click()</div><div class="code_line">Call SendMessage(txtMain.hwnd, EM_UNDO, 0, 0)</div><div class="code_line">End Sub</div></ol></div></div></div></div><br>
Вот вы и написали свой первый текстовой редактор&#33;]]></description>
        <author>miksayer</author>
        <category>Разное (кодинг)</category>
      </item>
	
      </channel>
      </rss>
	