Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование (VB,C#,ASP,.NET): новости, советы, примеры



Выпуск # 398


http://www.kbyte.ru/

 

Новый выпуск!

Если у Вас возникнут какие-либо вопросы, замечания, пожелания или предложения, пишите, мы детально рассмотрим каждое Ваше сообщение – mailto: admin@kbyte.ru.

 

Содержание выпуска

Система ЭКСПЕРТ

    Вопрос #001017: Бесплатные программы

    Вопрос #001014: Avi и Mpeg4 в Visual Basic

    Вопрос #000952: Обработка файлов в C# (.NET 2.0)

    Вопрос #000947: Секундомер

    Вопрос #000937: DLOOKUP??

Последнее на форумах

    Как сохранить данные из DataGrid'а в Excel?

    Параллельность обработки

    Работа с MySQL в Visual Basic

    сайт с поддержкой нескольких языков

    Подстраивание приложение поод разрешение экрана

Последние статьи

    Нестандартная форма

    Как узнать размер базы данных MySQL через php

    Взаимодействие с другими сайтами через HTTP (HttpWebRequest и HttpWebResponse)

    Работа с SQL – Запросы

    Использование XML.Serialization

Интересные коды и решения

Юмор на Kbyte.Ru

 

Система ЭКСПЕРТ

 

Система «Эксперт» - уникальная система, которая поможет решить, если не все, то многие Ваши проблемы с программированием и разработкой! Если у Вас есть какой-либо вопрос по программированию или разработке, то Вы всегда можете задать его нашим Экспертам! При этом каких-либо особых действий от Вас не потребуется! Просто отправьте Ваш вопрос на адрес mailto:expert@kbyte.ru, в теме письма укажите тему вопроса, в тексте – сам вопрос, и все! Эксперты дадут Вам ответ в течение 12-24 часов, на тот адрес, с которого Вы отправите вопрос. Все проще простого! Никакой регистрации и заполнение бесконечных форм, просто спросите и получите ответ ;-)


Вопрос #001017: Бесплатные программы

Автор вопроса: Sarj // 03.06.2008 / 08:56

Уважаемые эксперты, поскажите пожалуйста бесплатный аналог Corel Draw. Очень надо...

.....

Отвечает: Алексей Немиро // 03.06.2008 / 09:02

Здравствуйте, Sarj.

http://inkscape.org/

--
С наилучшими пожеланиями,
Немиро Алексей http://aleksey.nemiro.ru/

 

Вопрос #001014: Avi и Mpeg4 в Visual Basic

Автор вопроса: алексей // 02.06.2008 / 12:36

Как можно проигрывать эти форматы в вижал бэйсик? Пример на сайте не работает.

.....

Отвечает: Алексей Немиро // 02.06.2008 / 12:43

Здравствуйте, Алексей.

Можно использовать MediaPlayer. Для этого его нужно подключить к
проекту через меню Project (Проект) -> Components (Компоненты), в
появившемся окне найти и выбрать Windows Media Player. Далее, в
панели инструментов должна появиться иконка плеера, который можно
разместить на форме. Указать файл для проигрывания можно
в свойство URL, или FileName в зависимости от версии проигрывателя.

--
С наилучшими пожеланиями,
Немиро Алексей http://aleksey.nemiro.ru/

 

Вопрос #000952: Обработка файлов в C# (.NET 2.0)

Автор вопроса: Сергей // 09.05.2008 / 18:07

Доброе время суток!
В общих словах, такая задача поставлена передо мной: На веб-странице
пользователь выбирает файл, нажимает кнопку "Импорт" и из этого файла
данные импортируются в таблицу БД Oracle.
Файл должен быть текстовым, первые 2 строки- информация о времени и
логине того, кто выгружал. После них идут строки данных, поля
разделяются симоволом | .
Просьба дать ссылки на документацию по работе с файлами, которые могут
помочь :-)

Отвечает: Алексей Немиро // 12.05.2008 / 10:34

Здравствуйте, Сергей.

Необходимые классы и функции для работы с файлами лежак в пространстве имен System.IO. Также Вам могут понадобиться классы для работы с регулярными выражениями, которые лежат в пространстве имен System.Text.RegularExpressions.
Что касается импорта файлов, то данные можно взять прямо из потока FileUpload.PostedFile.InputStream, передать их в StreamReader и обработать при помощи регулярных выражений.

--
С наилучшими пожеланиями,
Немиро Алексей http://aleksey.nemiro.ru/

 

Вопрос #000947: Секундомер

Автор вопроса: Александр // 08.05.2008 / 17:40

Добрый день!
Как сделать секундомер на сайте kbyte.ru много но вот все они выдают результат как 345сек, а мне надо 1:45:01 то есть в временом формате. Как сделать???

.....

Отвечает: Алексей Немиро // 09.05.2008 / 08:29

Здравствуйте, Александр.

Зная, что в минуте 60 секунд, в часе 60 минут, а в сутках 24 часа, можно легко превратить 345 секунд в нужный формат.
001:
002:
003:
004:
005:
006:
007:
008:
009:
Dim sec As Integer
sec = 345
Dim ssec As Integer, min As Integer, hour As Integer
If sec > 59 Then
 min = Int(sec / 60)
 ssec = sec Mod 60
End If
If min > 59 Then hour = Int(min / 60)
MsgBox sec & " сек. = " & hour & " ч. " & min & " мин. " & ssec & " сек."



--
С наилучшими пожеланиями,
Немиро Алексей http://aleksey.nemiro.ru/

 

Вопрос #000937: DLOOKUP??

Автор вопроса: Алексей // 05.05.2008 / 16:37

Почему те поля формы, которые имеют в ControlSource функцию Dlookup не записывают значение полей в конечную таблицу?

--------------------------------------
Категория: --- MS Access

Отвечает: Алексей Немиро // 06.05.2008 / 05:24

Здравствуйте, Алексей.

Из справки MS Access: Функция Dlookup
При использовании этой функции не учитываются
несохраненные изменения записей подмножества. Если функция
DLookup должна использовать измененные значения, необходимо сначала сохранить
изменения с помощью команды Сохранить запись в меню
Записи, с помощью перемещения фокуса на другую запись или
метода Update.


--
С наилучшими пожеланиями,
Немиро Алексей http://aleksey.nemiro.ru/

 


Чтобы задать Ваш вопрос, отправьте его на адрес expert@kbyte.ru

Раздел Эксперт на сайте Kbyte.Ru

Наверх

 

 

Последнее на форумах

Как сохранить данные из DataGrid'а в Excel? | Автор: Avalon
Добавлено: 11.11.2008 / 16:48 | ответов: 0 | просмотров: 18

Подскажите пожалуйста как сохранить в .xls-файл данные из DataGrid'а...

Ответить на это сообщение | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Параллельность обработки | Автор: graf_4
Добавлено: 11.11.2008 / 09:31 | ответов: 3 | просмотров: 63

Как сделать так, чтобы при загрузке (в моем случае БД) отображался некий анимационный процесс???
Конкретно: есть очень большая БД, и при SQL запросе затрачивается очень большое время, хотелось бы на время подключения отображался простой циклический процесс в виде ProgressBar

Ответить на это сообщение | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 1 | Автор: Алексей
Добавлено:11.11.2008 / 09:48
считывать данные циклом построчно, периодически вызывать DoEvents.
Например:
001:
002:
003:
004:
005:
006:
007:
For i = 0 To 10000000
If i Mod 1000 = 0 Then DoEvents
'или просто DoEvents (без If i Mod 1000 = 0 Then), но тогда скорость загрузки значительно снизится
Next

_______________________
Colorized by: Eros.CodeSyntaxColor Engine


_________________
Это сообщение добавлено через Kbyte.Ru Forum Mail Conference (FMC)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 2 | Автор: graf_4
Добавлено:11.11.2008 / 09:57
проблема в том, что построчно считывать не получается.
т.е. получается так:
1. Формирую SQL запрос к базе
2. Выполнение запроса (и в это время все виснет, до тех пор пока запрос не выполнится)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 3 | Автор: Алексей
Добавлено:11.11.2008 / 10:10
Тогда:
1. Можно использовать более продвинутый язык, чем VB 6.0.
2. В VB можно использовать dll-ку написанную на более продвинутом языке.
3. Использовать цикл и считывать данные построчно.

_________________
Это сообщение добавлено через Kbyte.Ru Forum Mail Conference (FMC)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Работа с MySQL в Visual Basic | Автор: Avalon
Добавлено: 10.11.2008 / 17:01 | ответов: 4 | просмотров: 93

Установлен Денвер 3. Через phpMyAdmin создана БД "db" с таблицей "avalon". Как подключится к этой БД и вывести содержимое таблицы "avalon" в DataGrid?

Ответить на это сообщение | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 1 | Автор: Алексей
Добавлено:11.11.2008 / 09:48
Через ODBC, соответствующие драйвера есть на официальном сайте MySql.

_________________
Это сообщение добавлено через Kbyte.Ru Forum Mail Conference (FMC)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 2 | Автор: Avalon
Добавлено:11.11.2008 / 11:06
Ну я MySQL Connector/ODBC 5.1 установила, дальше что делать?

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 3 | Автор: Алексей
Добавлено:11.11.2008 / 11:23
Меню Project => Reference
найти и выбрать Microsoft DAO 3.6 Object Library
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
Dim conn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim result As Long

    Set conn = New ADODB.Connection
    conn.CursorLocation = adUseClient
    conn.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};" _
        & "SERVER=localhost;" _
        & "DATABASE=db;" _
        & "UID=login;" _
        & "PWD=password;" _
        '& "OPTION=" & 1 + 2 + 8 + 32 + 2048 + 16384

    conn.Open
    Set rs = New ADODB.Recordset
    rs.Open "SELECT * FROM avalon", conn, adOpenStatic, adLockReadOnly
    'далее, обычным способом работать с RecordSet
    'зы: главное не забыть запустить сам MySql :)

_______________________
Colorized by: Eros.CodeSyntaxColor Engine


_________________
Это сообщение добавлено через Kbyte.Ru Forum Mail Conference (FMC)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 4 | Автор: Avalon
Добавлено:11.11.2008 / 16:38
Спасибо

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


сайт с поддержкой нескольких языков | Автор: abra
Добавлено: 09.11.2008 / 18:00 | ответов: 11 | просмотров: 240

есть сайт, на нем страница Default.aspx, в папке App_GlobalResources лежит файл ресурсов Interface.resx. Все работает.

Пытаюсь для ивритской культуры в ту же папку App_GlobalResources добавить Interface.aspx.he-IL.resx, сервер выдает ошибку.
Parser Error Message: The resource object with key 'lTitle' was not found.
- Title тоже должем быть на иврите. Вывод - сервер почему то не видет мою таблицу.
почему это происходит и как можно лечить? Предположения, что lTitle' отсутствует или написано не верно не принимаются, т.к. она файл скопирован с Interface.resx и просто переименован и переведен...

Ответить на это сообщение | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 1 | Автор: Алексей
Добавлено:10.11.2008 / 03:45
App_GlobalResources - это глобальные ресурсы, для страниц по-идеи
должны быть App_LocalResources.
Ресурсы для страницы генерируются автоматически. Для этого нужно
открыть страницу в режиме дизайнера и выбрать в меню
Tools -> Generate Local Resource
Вполне возможно, что указаны не все параметры для объекта lTitle, или
он указан некорректно.

_________________
Это сообщение добавлено через Kbyte.Ru Forum Mail Conference (FMC)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 2 | Автор: abra
Добавлено:10.11.2008 / 11:49
Если бы пробема была в App_GlobalResources, не работал бы файл ресурсов Interface.resx, но он бегает. Значит досту есть. Кроме того, разница между Generate Local Resource и App_LocalResources только в доступах файлов...

Ресурсы для страницы , можно генерировать автоматически, но можно же и в ручную,это дело добровольное. ;).Повторюсь- Предположения, что lTitle' отсутствует или написано не верно не принимаются, т.к. она файл скопирован с Interface.resx и просто переименован и переведен...

меня на самом деле, интересует техника перехода с одного языка на другой, т.к. есть страница Default.aspx.
001:
002:
003:
004:
005:
006:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="RU_Default" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title><asp:Literal runat="server" Text="<%$ Resources:Interface, lTitle %>"></asp:Literal></title>

Colorized by: Eros.CodeSyntaxColor Engine
и т.д.

в Default.aspx.cs прописано
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

public partial class RU_Default : BasePage
{
  public RU_Default() : base(3, 1251, "ru-RU") { }

Colorized by: Eros.CodeSyntaxColor Engine
и т.д.

в вызываемом файле BasePage.cs прописанно
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026:
027:
028:
029:
030:
031:
032:
033:
034:
035:
036:
037:
038:
039:
040:
041:
042:
043:
044:
045:
046:
047:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Threading;
using System.Globalization;

/// <summary>
/// BasePage for the common funtionality in all
/// the web pages of the site.
/// </summary>
public class BasePage : Page
{
  public int languageId    = 0;
  public int encoding     = 0;
  public string culture    = string.Empty;

  public BasePage(int languageId, int encoding, string culture) : base()
  {
    this.languageId = languageId;
    this.encoding = encoding;
    this.culture = culture;
  }

  protected override void InitializeCulture()
  {
    SetCulture();

    base.InitializeCulture();
  }

  protected void SetCulture()
  {
    Response.ContentEncoding  = System.Text.Encoding.GetEncoding(((BasePage)this.Context.Handler).encoding);
    Request.ContentEncoding   = System.Text.Encoding.GetEncoding(((BasePage)this.Context.Handler).encoding);
  
    Thread.CurrentThread.CurrentUICulture  = new CultureInfo(this.culture);
    Thread.CurrentThread.CurrentCulture   = new CultureInfo(this.culture);
  }
}

Colorized by: Eros.CodeSyntaxColor Engine



и меня очень смущает присваемые здесь
001:
002:
003:
004:
005:
public int languageId    = 0;
  public int encoding     = 0;
  public string culture    = string.Empty;

Colorized by: Eros.CodeSyntaxColor Engine

Каким образом можно изменить язык, если languageId всегда 0? Даже при изменении в файле в Default.aspx.cs
001:
002:
003:
public RU_Default() : base(3, 1251, "ru-RU") { }

Colorized by: Eros.CodeSyntaxColor Engine
и т.д.
[/c] на
001:
002:
003:
public RU_Default() : base(3, 1255, "he-IL") { }

Colorized by: Eros.CodeSyntaxColor Engine
и т.д.
[/c]
Не очень сумбурно объясняю?

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 3 | Автор: Алексей
Добавлено:10.11.2008 / 12:22
Каким образом можно изменить язык, если languageId всегда 0? Даже при изменении в файле в Default.aspx.cs

Во-первых, это значения по умолчанию, они меняются при инициализации класса:
001:
002:
003:
004:
005:
006:
007:
008:
009:
public BasePage(int languageId, int encoding, string culture) : base()
 {
  this.languageId = languageId;
  this.encoding = encoding;
  this.culture = culture;
 }

_______________________
Colorized by: Eros.CodeSyntaxColor Engine

Во-вторых, переменная languageId больше нигде в приведенных кодах не используется и ее назначение мне вообще непонятно.

Да и в целом класс BasePage в данном примере кривой, я бы даже сказал бредовый :)

<title><asp:Literal runat="server" Text="<%$ Resources:Interface, lTitle %>"></asp:Literal></title>

а зачем Literal? Во-первых, есть альтернатива asp:Localize, чтоб не
путаться. Во-вторых, чем меньше серверных контролов, тем лучше,
вариант: <title><%$ Resources:Interface, lTitle %></title> должен работать.
Если нужен общий Title, то лучше использовать MasterPage.

Про локализацию я уже много раз писал, например тут:
http://kbyte.ru/code/show.aspx?id=106 <- там есть пример для загрузки
http://kbyte.ru/Expert/Show.aspx?id=700

_________________
Это сообщение добавлено через Kbyte.Ru Forum Mail Conference (FMC)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 4 | Автор: abra
Добавлено:10.11.2008 / 12:45
дело в том, что сайт со всем этим бредом уже существует, а мне надо ео перевести на 2 добавочных языка. Не переписывать же его с нуля.
надо разбираться :о(

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 5 | Автор: Алексей
Добавлено:10.11.2008 / 12:51
И каким образом должна меняться культура?
При нажатии на кнопку, или через url, или устанавливается глобально
на весь сайт, или еще как-нибудь?

_________________
Это сообщение добавлено через Kbyte.Ru Forum Mail Conference (FMC)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 6 | Автор: abra
Добавлено:10.11.2008 / 13:07
на данный момент, устанавливается глобально на весь сайт. Разные культуры будут сисеть на разных url. Например site.ru, site.en, site.he

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 7 | Автор: Алексей
Добавлено:10.11.2008 / 13:15
Если глобально, то код вообще не нужно писать :)
Код нужен только для динамического изменения культуры.
Глобально установить нужную культуру можно в корневом файле web.config:
001:
002:
003:
004:
005:
006:
007:
008:
<system.web>
  <globalization requestEncoding="windows-1251"
   responseEncoding="windows-1251"
   culture="ru-RU"
   uiCulture="ru-RU"
   responseHeaderEncoding="windows-1251"
  />
</system.web>


_________________
Это сообщение добавлено через Kbyte.Ru Forum Mail Conference (FMC)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 8 | Автор: abra
Добавлено:10.11.2008 / 13:21
не сыпь мне соль на рану :о))))))
только что мне было ясно сказанно "переписывать код не будем"надо внести минимальные изменения :о)))

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 9 | Автор: Алексей
Добавлено:10.11.2008 / 13:29
Ну это и есть минимальные изменения :) Внести небольшие изменения в
один файл web.config и в классе BasePage просто закомментировать вызов функции SetCulture();,
делов на 30 секунд :)

Если проект разовый - заказной, брать бабло и валить, валить, валить, ибо кривая архитектура до добра не доведет ;)

_________________
Это сообщение добавлено через Kbyte.Ru Forum Mail Conference (FMC)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 10 | Автор: abra
Добавлено:10.11.2008 / 13:35
валить не получится :о( Видно разгребать мне это до последне запятой :о(

а что делать, если меняться культура через url будет? Просто ожелания тут маятником ходят......

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 11 | Автор: Алексей
Добавлено:10.11.2008 / 14:26
Ссылку на пример я уже давал.
В BasePage можно засунуть такой код:
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
private string lang = "ru-RU";

 protected override void InitializeCulture()
 {
  if (!string.IsNullOrEmpty(Request["lang"])) lang = Request["lang"];
  if (!System.Threading.Thread.CurrentThread.CurrentUICulture.Name.ToLower().StartsWith(lang.ToLower()))
  {
   System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.CreateSpecificCulture(lang);
   System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(lang);
  }
 }

_______________________
Colorized by: Eros.CodeSyntaxColor Engine

в url указывать параметр lang=код-Культуры, например:
http://site.ru/default.aspx?lang=en-US

Если по домену, то код такой-же, только придется дергать из домена
домен первого уровня, и по нему подбирать нужную культуру.

Например:
http://site.ru
http://site.com

001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
private string lang = "ru-RU"; // культура по-умолчанию

 protected override void InitializeCulture()
 {
  if (Request.Url.Host.ToLower().EndsWith(".com"))
  {
   lang = "en-US";
  }
  else if (Request.Url.Host.ToLower().EndsWith(".ru"))
  {
   lang = "ru-RU";
  }
  // и т.д. и т.п.
  if (!System.Threading.Thread.CurrentThread.CurrentUICulture.Name.ToLower().StartsWith(lang.ToLower()))
  {
   System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.CreateSpecificCulture(lang);
   System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(lang);
  }
 }

_______________________
Colorized by: Eros.CodeSyntaxColor Engine


Тоже достаточно минимальные изменения.

_________________
Это сообщение добавлено через Kbyte.Ru Forum Mail Conference (FMC)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Подстраивание приложение поод разрешение экрана | Автор: 26RUS
Добавлено: 08.11.2008 / 14:09 | ответов: 4 | просмотров: 138

Здравствуйте.
У меня получилась проблемка созданное приложениенормально отображает компоненты формы только при одном разрешении экрана.
При установке меньшего разрешения компоненты накладываються друг на друга.
Подскажите какими путями можно избавиться от такой баги.

Ответить на это сообщение | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 1 | Автор: Neco
Добавлено:08.11.2008 / 16:14
наверное так же это решалось до эпохи исторического империализма - резайзом. можно скрины посмотреть или как-то иначе понять, в чём особенность данной проблемы?

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 2 | Автор: 26RUS
Добавлено:09.11.2008 / 00:07
оссобенность в том что у меня тока один вариант решения данной проблемы.
взять размер экрана и вычислить коэффициент и взависимости от него увеличивать и уменьшать компонетны на форме.

но мне кажеться что это не очень хороший выход,
пояснишь как это решалось до эпохи империализма?

P.S. извиняюсь за ошибки в теме 8}

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 3 | Автор: Neco
Добавлено:09.11.2008 / 11:34
через коэф-т от размеров экрана я первый раз слышу такое решение честно говоря.
мне кажется по минимуму достаточно реализовать в своих компонентах свойства Anchor (Top Left Bottom Right).
А чтобы совсем всё пушисто сделать, то ещё и реализовать аналоги TablePanelLayout и SplitContainer.
Это всё из дотнетовских стандартных компонентов - т.е., другими словами - просто подсмотри как это сделано у кого-то ещё. )
Anchor это такое стандартное свойство, которое задаёт дизайнер. К примеру, я хочу чтобы у меня на форме были таблица и детали к выделенному элементу, справа от этой таблицы. Причём в более простом случае мне достаточно, чтобы при изменении размеров формы увеличивалась моя таблица, а детали просто отъезжали вправо, "прицепившись" к правому борту формы. Тогда я задаю моим деталям Anchor=Top|Bottom|Right, а таблице Anchor=Top|Left|Bottom|Right. После этого контрол для деталей должен стремиться ресайзнуться так, чтобы сохранить своё первоначальное расстояние от верхнего, правого и нижнего бортов, а до левого ему по фиг. Следовательно задача сводится к тому, чтобы запомнить свои первоначальные габариты (расстояния до бортов контейнера), а при ресайзе следить за тем, чтобы не изменялись те, которые мы закрепили "якорем" (оперируя размерами контейнера до и после ресайза), отыгрываясь на незакрепленных.
TablePanelLayout это ещё одна степень свободы - можно кинуть на форму сетку, в ячейки этой сетки накидать свои компоненты, сказать им, чтобы они всегда занимали всю площадь контейнера и далее уже работать с самой сеткой. К примеру, говорим, что первая колонка будет шириной 20% от родителя. Ну а реализовать это - дело техники.
Что касается самой среды Visual C++, то я думаю там надо будет вначале прописать инфраструктуру - создать базовый компонент Control, который будет иметь и Anchor, и события Resize с аргументами в виде PreviousSize и NextSize, и логику пересылки события Resize от родительского компонента детям, и собственно сам Resize. Потом наследоваться от этого Control'а при проектировании всех остальных компонент и они все срау станут "умными" в плане размеров.

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 4 | Автор: 26RUS
Добавлено:09.11.2008 / 12:33
спасибо, я думал об этом Anchor, но почемуто не стал копать.

Спасибо попробую

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Наверх

 

Последние статьи

Нестандартная форма
Автор: Zhenik Ipatov | добавлено: 05.05.2008 / 12:42 | просмотров: 1505

Первое что бросается в глаза, когда первый раз используешь программу это конечно же её облик, внешний вид. Есть вероятность что если пользователю не понравится внешний вид окна, то он не будет пользоваться продуктом. Значит нам, не побоюсь этого слова, программистам нужно как можно лучше, удобнее, понятнее, красивее и приветливее сделать лицо программы. Нужно как можно эффектнее преподнести программу. С самого первого появления Windows окна получили прямоугольный стандарт и все User Control’ы

Как узнать размер базы данных MySQL через php
Автор: Николай Рудченко | добавлено: 14.02.2008 / 13:01 | просмотров: 1841

В этой небольшой статье вы узнаете, как получить размер вашей базы данных (БД) MySQL используя язык программирования PHP.

Взаимодействие с другими сайтами через HTTP (HttpWebRequest и HttpWebResponse)
Автор: Немиро Алексей | добавлено: 27.07.2007 / 14:01 | просмотров: 8060

В данной статье речь пойдет о том, как можно программно заполнить и отправить Web-форму, а также получить результат с использованием довольно простых классов - HttpWebRequest и HttpWebResponse.

Работа с SQL – Запросы
Автор: Хабибулин А. (aka Bille Gates) | добавлено: 22.07.2007 / 04:43 | просмотров: 14628

В данной статье рассмотрены часто используемые SQL-запросы и приведены примеры их использования.

Использование XML.Serialization
Автор: Немиро Алексей | добавлено: 19.07.2007 / 15:38 | просмотров: 3780

В данном обзоре речь пойдет об использование XML.Serialization в .NET и ее применении на примере сохранения и считывания настроек программы с использованием синтаксиса языка Visual Basic .NET.

 

Статьи на Kbyte.Ru

Наверх

 

Интересные коды и решения

Как получить данные из базы данных?
Дата добавления: 31.07.2006 / 12:50 | просмотров: 4472 | платформа: VB

Как разрешить вводить в TextBox только цифры?
Дата добавления: 04.08.2006 / 16:55 | просмотров: 3147 | платформа: ASP .NET (VB)

Проверка существования файла с использованием API
Дата добавления: 31.07.2006 / 12:41 | просмотров: 2781 | платформа: VB

Как узнать IP-адрес текущего посетителя?
Дата добавления: 31.07.2006 / 15:34 | просмотров: 3064 | платформа: ASP .NET (VB)

Воспроизведение звукового файла #2
Дата добавления: 31.07.2006 / 12:54 | просмотров: 2775 | платформа: VB

Перекодировка текста с латинской раскладки в русскую
Дата добавления: 16.08.2006 / 19:12 | просмотров: 3635 | платформа: VB

Округление до десятых, сотых, тысячных и т.д.
Дата добавления: 04.02.2007 / 21:09 | просмотров: 3508 | платформа: VB

Анализ даты стандарта RFC822
Дата добавления: 24.03.2007 / 10:58 | просмотров: 1944 | платформа: RegEx

Как сделать Label с тенью?
Дата добавления: 16.08.2006 / 23:42 | просмотров: 2285 | платформа: VB

Как получить строку параметров текущего запроса?
Дата добавления: 31.07.2006 / 15:38 | просмотров: 2328 | платформа: ASP .NET (VB)

 

Универсальные коды на Kbyte.Ru

Наверх

 

Юмор на Kbyte.Ru

Прыгают десантники. Все выпрыгнули. Выпускающий:
- Иванов, ты же первый выпрыгнул?
- Да, товарищ капитан, парашют не раскрылся - пришлось вернуться!

 

Рейтинг: 306
Всего голосов: 551
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Женщина звонит подруге на мобильный:
- Ты знаешь, где сейчас твой муж?
- Конечно, знаю. На работе.
- А я его вижу в моей постели с какой-то пышноволосой девицей.
- Спасибо за комплимент, дорогая. Только это не мой, а твой муж.

 

Рейтинг: 342
Всего голосов: 571
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Стоят три вампира. Один говорит:
- Вон видите то дерево? За ним деревня. Сейчас я там всех убью.
Возвращается, все пятки в крови.
Второй вампир говорит:
- Вон видите то дерево? Сейчас там всех убью!
Возвращается, по пояс в крови.
Третий говорит:
- Сейчас что будет!!!
Возвращается, весь в крови.
Его спрашивают:
- Как ты это сделал?
Он им отвечает:
- Вон видите то дерево? А Я ЕГО НЕ УВИДЕЛ!!!

 

Рейтинг: 567
Всего голосов: 836
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

- Почему русские не выдвигаются в правительство Норвегии?
- А вы хотите, чтобы у вас был емайл premyer-minister@gov.no?

 

Рейтинг: 443
Всего голосов: 725
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Вовочка спрашивает:
- Папа презервативы рвутся?
- Посмотри в зеркало!

 

Рейтинг: 342
Всего голосов: 577
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Мучаюсь вопросом: А стоило ли становиться актером, чтобы на каждой остановке висел твой портрет с надписью:
Евгений Миронов
ИДИОТЪ

 

Рейтинг: 280
Всего голосов: 475
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Кликуха - это не то, что вы подумали, а компьютеpная мышь!

 

Рейтинг: 435
Всего голосов: 682
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Идет программист по улице тут ему на голову падает кирпич. Тетрис, подумал программист...

 

Рейтинг: 441
Всего голосов: 700
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Афиша на дверях борделя:
"Только в декабре крошка Сорти творит чудеса даже в холодной воде!".

 

Рейтинг: 360
Всего голосов: 574
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Мелкософт на две фирмы распилили. Теперь одна будет делать продукты, а вторая будет делать для них патчи.

 

Рейтинг: 433
Всего голосов: 705
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Весь юмор на Kbyte.Ru

Наверх


Выпуск подготовил: R-KDR-19826

Редактор: Немиро Алексей

Copyright (c) Nemiro AS, 2005-2007


В избранное