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

Клуб профессиональных программистов :: Выпуск #101


Клуб профессиональных программистов "Весельчак У"
Информационная рассылка сайта и форума.  Выпуск No101 (2010-10-27).

Здравствуйте, уважаемые читатели!

Сегодня в выпуске — статья «Галерея на GreyBox&е».




Также предлагаем вашему вниманию подборку интересных тем форума.



Для своих нужд понадобилось сделать фотогалерею. Казалось бы, что еще проще? Возьми готовое и вперед. Пересмотрел большое количество галерей, и в каждой мне что-то не нравилось. То привязка к jquery или к другому фреймворку, то размер, то не совсем понятная навигация. А хотелось что-то такого своего, маленького, понятного. Так нашелся jsimagebox. Казалось, что еще надо? Я ее даже применил, описывая прогулку по прекраснейшим местам Харьковщины.

После решения этой проблемы поиски прекратились. Но что-то в ней мне тогда не понравилось. Скорей всего, прописывание onclick на изображении. И мне тогда не удалось заставить его корректно динамически подгружать изображения. А тут появился в переработку сайт с установленным lightbox'ом. Я когда глянул в код, ужаснулся, и мне быстро-быстро захотелось с него спрыгнуть. Lightbox не понравился только мне, и это не значит, что он не понравится кому-то еще.

Я пересмотрел опять определенное количество галерей, мой выбор пал на GreyBox. Достаточно интересный скрипт, работающий с iframe, не знаю, плохо это или хорошо, динамически подгружаемые изображения. Один из недостатков, на мой взгляд, — плохая физика смены эффектов. Но эффекты можно было отключить, что я и сделал. Я даже встроил в свою админку включение сервиса галереи.

Прошло некоторое время; и тут мне в руки попалось огромное количество фотографий с Камчатки, и мне не хотелось каждый раз щелкать, а захотелось запустить слайд-шоу и наслаждаться сменой картинки, откинувшись в кресле, заложив руки за голову.

Наконец-то подошли к телу делу.




Целиком можно прочесть в разделе Web нашего сайта.


  • Программирование :: Общий
  • Привет, Народ, сегодня поступило новове задание.
    Есть два модуля(A и B), которые обмениваются сообщениями по сокету. Нужно сделать эмулятор для тестирования одного из модулей.
    Эмулятор, соответственно, должен на сообщения от модуля A давать такие ответы, которые при реальной работе возвращал бы настоящий модуль B.
    Протокол обмена известен.

    Проблемы:
    1. Ответы модуля B должны содержать часть той информации которая получена от A ранее.
    Например. A говорит "выполнить задачи 1,2,3,4"
                      Эмулятор отвечает "начал выполнение задачи 1" затем после задержки "начал выполнение задачи 2" и.т.д.
    2. Последовательности могут быть сложными. Например на 1 сообщение от А должно быть 5 разных ответов от B и\или наоборот.

    Платформа Java 1.6 + Ubuntu Linux

    Что хочется:
    1. Посоветуйте какие-нибудь стандартные инструменты\библиотеки для того, чтобы реализовать такую хрень. Что из готового может быть полезно?
    2. Советы по дзайну - как все это реализовать? Может кто-то уже делал что-то подобное.



  • [от модератора: отделил отсюда: http://forum.shelek.ru/index.php/topic,25694.0.html]

    Благодарю за внимание.
    Попал на форум через статью "Создание справочной системы...":
    http://club.shelek.ru/viewart.php?id=157

    Позвольте вопрос:
    можно ли справочную систему (*.hlp) "набирать" в Wordpad, а не в Word?
  • Добрый день или уже скорее вечер!

    Недавно столкнулся столкнулся лицом к лицу с проблемой выбора темы для своего диплома, и даже пока нет никаких представлений.
    Заканчиваю 5-й курс факультета информационных технологий по специальности прикладная математика в экономике. Помогите советом или подскажите, чтобы были хоть какие то представления.

    Заранее очень Вам благодарен.
  • Программирование :: .NET технология от и до
  • Теперь конкретнее.... Есть датагрид, есть access и мускул....и студия 10я.... Мне нужно  цикличную построчную выборку из табл аксесс и построчную запись в мускул(в цикле)...
    с построчным же выводом в датагрид(в цикле)... если есть киньте код, если нет то обьясните пожалуйста подробно, приблизительно я знаю)))
  • День добрый. при связке wsHttpBinding прокси-клиент создается один раз, пока я его не закрою. В сильверлайте используется связка httpBaseBinding. И там каждый раз при вызове метода прокси создается заново. Отслеживал, используя вот такой простой код. В сильверлайте при клике не кнопку вызываю метод GetDate - время всегда меняется...

    Код:
     [ServiceContract]
        public interface IService1
        {
            [OperationContract]
            string GetDate();

        }

    Код:
        public class Service1 : IService1
        {
            private DateTime now;
            public Service1()
            {
                now = DateTime.Now;
            }
            public string GetDate()
            {
                return now.ToString();
            }
        }


    Но что делать, если мне нужно в одном методе передать данные, в другом их обработать и результат получить в третьем?
  • Добрый день.

    В С# я новичок. Но возникло желание перенести старую аппликацию с С++ в Сш.
    Вот такой вопрос:
    На экране есть два поля. В первом поле всегда английский, а во втором всегда русский.
    Могу ли я, и если да, то как, автоматически задавать язык дла клавиатуры при передаче фокуса в конкретное поле?

    Спасибо.

    Добавлено через 49 секунд:
    Спасибо за О. Начал русский забывать.
    Жалко, что спасибо только за О.
  • Программирование :: С/С++
  • В общем, есть у меня обычный консольный проект, есть dll-ka, в которой описание всего одной функции. Как подгрузить эту штуку в проект?
  • Здравствуйте!
    Задача у меня такая: данная функция X(t)=5.6*cos(t)+ 2.4*cos(7*t/3); Y(t)=5.6*sin(t) - 2.4*sin(7*t/3); Требуется найти все нули функции (то есть найти точки c координатой (X,0))
    Я написал программку:

    Код: (c++)
    #include <math.h>
    #include <iostream.h>
    #include <conio.h>
    #define dt M_PI/1000
    double X(double t)
    {
    return 5.6*cos(t)+ 2.4*cos(7*t/3);
    }
    double Y(double t)
    {
    return 5.6*sin(t) - 2.4*sin(7*t/3);
    }
    void FindZeroPoint (double left, double right)
    {
    double t;
    double array1[100], array2[100];
    int count=0;
    for(t=left;t<=right;t+=dt)
    {
    if(Y(t)*Y(t+dt)<0){
    count++;
    array1[count]=X(t);
    array2[count]=Y(t);
    }
    }
    cout<<"count="<<count<<endl;
    for (int i=0; i <= count-1; i++) {
                    cout<<"("<<array1[count]<<";"<<array2[count]<<")";
    }
    }
    int main(void)
    {
    FindZeroPoint(0,6*M_PI);
    getch();
    return 0;
    }

    И результат выполнения этой программки таков (рисунок 1)
    График этой функции таков (рисунок 2)
    Так что, я не могу понять что не правильно в функции void FindZeroPoint (double left, double right).
    Буду благодарен за любой ответ!
  • Программирование :: С/С++ :: ANSI С/С++
  • Попался на глаза очень компактный и в то же время содержательный тест на знание языка С. Может пригодиться тем, кто проводит собеседование с кандидатами на работу:

    http://chipenable.ru/index.php/programming-c/68-c-test-the-0x10-best-questions-for-would-be-embedded-programmers.html

    Конечно, сейчас на С пишут все меньше, но все же может оказаться полезным. Не обращайте внимания на якобы ориентацию на встраиваемые системы, там они вскользь упоминаются в единственном вопросе. Никакой привязки к конкретной реализации языка нет.
  • Программирование :: С/С++ :: WinAPI & Visual C++
  • в C++ имеется замечальная функция
    system(const char* );  
    которая позволяет выполнить команду консоли. К примеру

    system( "color 20" ); //сделать фон консоли зелёным

    А вот как эту команду выполнить для дочернего процесса - чтобы его консоль была не чёрной, а как мне нужно ?

    (само собой, дочерний - не мой, это утилита)

  • Проблема в следующем: у меня есть класс, отвечающий за создание/рисование окна.
    Я хочу внести функцию обработки событий WndProc в мой класс.

    Ошибка при компиляции указывает на строку:
    Код:
    KWnd mainWnd(TEXT("An application"), hInstance, nShowCmd, &KWnd::WndProc);

    Текст ошибки:
    Цитировать
    cannot convert parameter 4 from 'LRESULT (__stdcall KWnd::* )(HWND,UINT,WPARAM,LPARAM)' to 'LRESULT (__stdcall *)(HWND,UINT,WPARAM,LPARAM)'

    Чего-то не соображу, как параметр привести к виду __stdcall KWnd::*
    может это вообще не так делается?
    Буду рад советам.

    main.cpp
    Код:
    //#include <windows.h>
    #include "KWnd.h"


    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
    {

    MSG msg;
    KWnd mainWnd(TEXT("An application"), hInstance, nShowCmd, &KWnd::WndProc);

    while (GetMessage(&msg, NULL, 0, 0))
    {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    }

    return msg.wParam;
    }

    KWnd.h
    Код:
    #include <windows.h>

    void DrawNewPicture(HWND& hWnd,HDC& hMemDC,HBITMAP& hMemBMP);


    class KWnd
    {
    public:
    KWnd(LPCTSTR windowName, HINSTANCE hInst, int cmdShow,
    LRESULT (WINAPI *pWndProc)(HWND, UINT, WPARAM, LPARAM),
    LPCTSTR menuname = NULL,
    int x = CW_USEDEFAULT, int y = 0,
    int width = CW_USEDEFAULT, int height = 0,
    UINT classstyle="CS_HREDRAW" | CS_VREDRAW,
    DWORD windowstyle="WS_OVERLAPPEDWINDOW,"
    HWND hParent = NULL);

    // обработка сообщений: её в public или protected?
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);


    HWND GetHWnd() { return hWnd; }
    protected:
    HWND hWnd;
    WNDCLASSEX wc;

    };


    KWnd::KWnd(LPCTSTR windowName, HINSTANCE hInst, int cmdShow,
       LRESULT (WINAPI *pWndProc)(HWND, UINT, WPARAM, LPARAM),
       LPCTSTR menuName, int x, int y, int width, int height,
       UINT classStyle, DWORD windowStyle, HWND hParent)
    {
    TCHAR szClassName[] = TEXT("KWndClass");

    wc.cbSize = sizeof(wc);
    wc.style="classStyle;"
    wc.lpfnWndProc = pWndProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInst;
    wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)COLOR_WINDOW;
    wc.lpszMenuName = menuName;
    wc.lpszClassName = szClassName;
    wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);


    if (!RegisterClassEx(&wc))
    {
    TCHAR msg[100] = TEXT("Cannot register class: ");
    wcscat_s(msg, 100, szClassName);
    MessageBox(NULL, msg, TEXT("Error"), MB_OK | MB_ICONERROR);
    return;
    }

    // по умолчанию окно располагается по центру
    // и имеет фиксированную высоту/ширину
    if (x == CW_USEDEFAULT && width == CW_USEDEFAULT)
    {
    // получаем разрешение монитора (1024х768)
    int xFullScreen = GetSystemMetrics(SM_CXSCREEN);
    int yFullScreen = GetSystemMetrics(SM_CYSCREEN);

    // размеры окна по умолчанию
    width  = 720;
    height = 540;

    // вычисляем позицию левого верхнего угла окна
    x = int(xFullScreen/2 - width/2);
    y = int(yFullScreen/2 - height/2);
    }

    hWnd = CreateWindow(szClassName, windowName, windowStyle,
    x, y, width, height, hParent, (HMENU)NULL, hInst, NULL);

    if (!hWnd)
    {
    TCHAR text[100] = TEXT("Cannot create window: ");
    wcscat_s(text, 100, szClassName);
    MessageBox(NULL, text, TEXT("Error"), MB_OK | MB_ICONERROR);
    return;
    }

    ShowWindow(hWnd, cmdShow);
    UpdateWindow(hWnd);
    }

    LRESULT CALLBACK KWnd::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
    static HDC hMemDC=0;
    static HBITMAP hMemBMP=0;
    static bool bTimerOn=true;

    // характеристики таймера
    enum
    {
    e_timer_id=0, // идентификатор
    e_timer_vl=10, // время в миллисекундах
    };


    switch(uMsg)
    {
    case WM_CREATE:
    {
    DrawNewPicture(hWnd,hMemDC,hMemBMP);
    }
    break;

    case WM_TIMER:
    {
    DrawNewPicture(hWnd,hMemDC,hMemBMP);
    }
    break;

    case WM_RBUTTONDOWN:
    {
    if(bTimerOn=!bTimerOn)
    {
    KillTimer(hWnd,e_timer_id);
    }
    else
    {
    SetTimer(hWnd,e_timer_id,e_timer_vl,0);
    }
    }
    break;

    case WM_PAINT:
    {
    PAINTSTRUCT ps;
    RECT rect;

    HDC hDC = BeginPaint(hWnd, &ps);

    GetClientRect(hWnd, &rect);

    // Теперь копируем растр из памяти на экран
    if(hMemDC && hMemBMP)
    {
    BitBlt(hDC, 0, 0, rect.right, rect.bottom, hMemDC, 0, 0, SRCCOPY);
    }
    else
    {
    // отладочные команды (в случае ошибки)
    // если hMemDC или hMemBMP пуст, то рисуем одну линию
    // перечеркивающую экран
    MoveToEx(hDC,rect.left,rect.top,0);
    LineTo(hDC,rect.right,rect.bottom);
    }

    EndPaint(hWnd, &ps);
    }
    break;

    case WM_LBUTTONDOWN:
    {
    DrawNewPicture(hWnd,hMemDC,hMemBMP);
    }
    break;

    case WM_DESTROY:
    {
    if(hMemBMP)
    {
    DeleteObject(hMemBMP);
    hMemBMP=0;
    }

    if(hMemDC)
    {
    DeleteDC(hMemDC);
    hMemDC=0;
    }

    PostQuitMessage(0);
    }
    break;

    default:
    {
    return DefWindowProc(hWnd, uMsg, wParam, lParam);
    }
    break;
    }

    return 0;
    }

    // Функция рисования на форме
    // я её потом внесу в класс и уберу параметры, но это потом...
    // пока и так работает
    void DrawNewPicture(HWND& hWnd,HDC& hMemDC,HBITMAP& hMemBMP)
    {
    HPEN myPen = 0;
    int xrand = 0;
    int yrand = 0;
    int Rrand = 0;
    int Grand = 0;
    int Brand = 0;
    int iWidthRand = 0;
    int iStyleRand = 0;

    // послать в очередь сообщений сообщение WM_PAINT о том, что нужно перерисовать окно
    InvalidateRect(hWnd,0,0);

    // освободить память от предыдущего вызова
    if(hMemBMP)
    {
    DeleteObject(hMemBMP);
    hMemBMP = 0;
    }

    if(hMemDC)
    {
    DeleteDC(hMemDC);
    hMemDC = 0;
    }


    RECT rect;
    GetClientRect(hWnd, &rect);

    {
    HDC hDC = GetDC(hWnd);
    hMemDC  = CreateCompatibleDC(hDC);
    hMemBMP = CreateCompatibleBitmap(hDC,rect.right-rect.left+1,rect.bottom-rect.top+1);

    // освободить память от предыдущего вызова
    HBITMAP oldBMP = (HBITMAP)SelectObject(hMemDC,hMemBMP);
    if (oldBMP) DeleteObject(oldBMP);

    ReleaseDC(hWnd, hDC);
    }


    if(hMemDC && hMemBMP)
    {
    // рисуем что требуется
    MoveToEx(hMemDC, 50, 60, NULL);

    for (int i=0; i<10; i++)
    {
    // позиция по х и у, куда проводить линию
    xrand = rand()%(rect.right-100)+50;
    yrand = rand()%(rect.bottom-100)+50;

    // стиль (начертание) линии
    iStyleRand = rand()%7;

    // толщина линии
    iWidthRand = rand()%7;

    // цвет линии
    Rrand = rand()%256;
    Grand = rand()%256;
    Brand = rand()%256;

    // создаем карандаш
    myPen = CreatePen(iStyleRand, iWidthRand, RGB(Rrand, Grand, Brand));

    // выбираем наш карандаш
    SelectObject(hMemDC, myPen);

    // нарисовать линию
    LineTo(hMemDC, xrand, yrand);

    // освобождаем память из под созданного карандаша
    DeleteObject(myPen);
    }
    }
    }

  • Всем привет!
    Мне нужно узнать, заблокирован ли компьютер. То есть находится ли система в состоянии блокировка.
    Один из способов такой блокировки: ctrl+alt+del -> блокировка.
    Я нашол статью http://support.microsoft.com/kb/310153#top.
    К сожалению у меня выдает ошибку:
    Цитировать
    fastuserswitching\fastuserswitching.cpp(4) : fatal error C1083: Cannot open precompiled header file: 'Debug/FastUserSwitching.pch': No such file or directory
    Error executing cl.exe.
    Всю инструкцию я проделал в новом проекте.
    Работаю в Visual 6.
    Помогите разобраться.
    Заранее спасибо.
  • доброго времени суток

    меня интрерсует использование ResumeThread  и SuspendThread.

    я создаю поток
    AfxBeginThread (thread, THREAD_PRIORITY_NORMAL, 0,CREATE_SUSPENDED ,NULL ); //CREATE_SUSPENDED

    а вот тчобы приостановить его нужен дискриптор как параметр для  SuspendThread.
    как получить дискриптор потока?

    есть ли статьи по использованию  SuspendThread и ResumeThread
  • Программирование :: С/С++ :: Borland C/C++
  • Добрый день!
    Подскажите, пожалуйста, как достучаться до переменной в этой структуре:
    Код:
    struct TAT    
    {
    double a;           
    unsigned int b; 
    unsigned int c;   
    } ;
    typedef TAT *PAT; 
    Далее в коде создаю переменную на эту структуру и пытаюсь получить "a":
    Код:
    PAT *Best;

    Best->a;
    Но не катит, пишет:
    E2288 Pointer to structure required on left side of -> or ->*

    Как правильно написать ссылку?
  • Программирование :: Delphi
  • Всем Привет! :oh:
    У меня задание создать клиентское положение для больницы. Программа сложная, трудности начались с самого начала :weep1:Возможно вопросов будет много. Но пока что только 1.
    По щелчку в DBGrid (там отображается ФИО пациентов) в Memo должен отображаться адрес и телефон этого пациента.
    Вот
    Код:
    procedure TForm1.DBGrid2CellClick(Column: TColumn);
    begin
    ADOQuery5.Active:=False;
    ADOQuery5.Close;
    ADOQuery5.SQL.Clear;
    ADOQuery5.SQL.Add('SELECT * FROM Patient');
    ADOQuery5.Open;
    ADOQuery5.Active:=True;
    Memo4.Lines.Add(ADOQuery5.FieldByName('Sity').AsString);
    Memo4.Lines.Add(ADOQuery5.FieldByName('Street').AsString);
    Memo4.Lines.Add(ADOQuery5.FieldByName('Home').AsString);
    Memo4.Lines.Add(ADOQuery5.FieldByName('Kv').AsString);
    Memo4.Lines.Add(ADOQuery5.FieldByName('P_Kont_Phone').AsString);
    end;
    Но у меня отображается в Memo только запись которая в акцессе в таблице первая записана. А их там 25 штук разных адресов, при каждом щелчке на другом пациенте должен отбражаться его адрес. Что делать?  :(
  • Всем доброго времени суток. У меня имеется следующая проблема: надо написать прогу под консоль Винды на Delphi с выводом русских букв.
    Решил попробовать сделать через WinAPI так же, как это делается на C++, т.е.
    Цитировать
    #include <conio.h>
    #include <iostream>
    #include <windows.h>
    using namespace std;

    typedef BOOL (WINAPI *SETCONSOLEFONT)(HANDLE, DWORD);
     SETCONSOLEFONT SetConsoleFont;

    int main{

    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
     
    HMODULE hmod = GetModuleHandleA("KERNEL32.DLL");
    SetConsoleFont =(SETCONSOLEFONT) GetProcAddress(hmod, "SetConsoleFont");
    if (!SetConsoleFont) {cout<<"error\n" ; exit(1);}
    SetConsoleFont(GetStdHandle(STD_OUTPUT_HANDLE),1);
    cout<<"Test test"<<endl;

    getch();
    return 0;
    }

    и получил следующий код:
    Цитировать
    type
      funcdll = function (handle:THandle; NumFont:DWORD):LongBool;

    var
      dllHandle:THandle;
      SetConsoleFont:funcdll;
      b:boolean;
    begin
      SetConsoleCP(1251);
      SetConsoleOutputCP(1251);
      dllhandle:=GetModuleHandle('KERNEL32.DLL');
      @SetConsoleFont:=GetProcAddress(dllhandle,'SetConsoleFont');
      b:=SetConsoleFont(GetStdHandle(STD_OUTPUT_HANDLE),1);
      if(b) then writeln('УРА') else writeln(GetLastError);
      readln;
    end.

    В итоге: GetLastError возвращает 6, т.е. неверный дескриптор.
    В чем мной была допушена ошибка, если на C++ код работает?
  • Программирование :: Java
  • Как работает assertNotNull?
    Мне чтобы проверить, что boolean функция принимает значение, то есть ничего не падает это можно использовать?
  • Всем привет. Есть клиент, есть сервер. У клиента присутствует GUI. Реализовав GUI задался вопросм, где лучше всего расположить соединение с сервером. Соединение реализуется с помощью класса Socket, но на ответы с SocketChannel тоже интересно посмотреть. Сервер пишется свой.


    Идеал:

    происходит соединение с сервером, во время соединения отображается ход выполнения соединения (это можно опустить), если соединение установилось запускается главный фрейм приложения, иначе выводится диалоговое окно с сообщением, что сервер временно не доступен.


    Приблизительный код, котороый выводит только GUI

    Код:
    public class MainFrame extends JFrame {

        /** DEFAULT_WIDTH ширина фрейма по умолчанию */
        public static final int DEFAULT_WIDTH = 600;
        
        /** DEFAULT_HEIGHT высота фрейма по умолчанию */
        public static final int DEFAULT_HEIGHT = 500;

        public static final int DEFAULT_PORT = 2525;
        public static final String DEFAULT_HOST = "localhost";

        public MainFrame() {

            this.setTitle("PC Builder");
            this.setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);

            MainPanel mainPanel = new MainPanel();
            
            this.add(mainPanel, BorderLayout.CENTER);
        }

        private static void createAndShowGUI() {

            MainFrame mainFrame = new MainFrame();
            mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            mainFrame.setVisible(true);
        }

        private static Socket createServerConnection() {
            Socket socket = null;
            try {
                socket = new Socket(DEFAULT_HOST, DEFAULT_PORT);
            } catch (UnknownHostException ex) {
                socket = null;
                Logger.getLogger(MainFrame.class.getName()).log(
                        Level.SEVERE, null, ex);
            } catch (IOException ex) {
                socket = null;
                Logger.getLogger(MainFrame.class.getName()).log(
                        Level.SEVERE, null, ex);
            }

            return socket;
        }

        public static void main(String [] args) {

            javax.swing.SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    createAndShowGUI();
                }        
            });
        }
    }
  • Программирование :: Программирование 1С :: 1С 7.x
  • Доброго времени суток! создавая отчет в 1с, увяз на одном этапе:
    мне нужно, чтобы при нажатии первой кнопки открывался список с цехами(справочник.ИК_Цеха), из которого я добавляю нужные цеха в первый список(с идентификатором "подбор")
    при нажатии второй кнопки должен открываться список с профессиями(справочник.Должности), из которого я добавляю нужные долности в другой список(с идентификатором "долности")

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

    Код:
    Процедура Подбор(); 

    ОткрытьПодбор("Справочник.ИК_Цеха", "ИК_Цеха");
    КонецПроцедуры    
    //**************************************************
    Процедура Подбор2();


    ОткрытьПодбор("Справочник.Должности", "Должности");
    КонецПроцедуры            

    //**************************************************
    Процедура ОбработкаПодбора(Элемент,КонтФормы)
      
    Если ПустоеЗначение(Элемент)=0 Тогда
    Если Элемент.ЭтоГруппа()=0 Тогда
    Если ИК_Цеха.НайтиЗначение(Элемент)=0 Тогда
    ИК_Цеха.ДобавитьЗначение(Элемент,""+Элемент+?(Элемент.Наименование = Элемент,""," "));
    Иначе
    Предупреждение("Цех уже выбран в списке!",10);
    КонецЕсли;                                            
    КонецЕсли;
    КонецЕсли;

    //Если ПустоеЗначение(Элемент)=0 Тогда
    // Если Элемент.ЭтоГруппа()=0 Тогда
    // Если Должности.НайтиЗначение(Элемент)=0 Тогда
    // Должности.ДобавитьЗначение(Элемент,""+Элемент+?(Элемент.Наименование = Элемент,""," "));
    // Иначе
    // Предупреждение("Профессия уже выбрана в списке!",10);
    // КонецЕсли;                                            
    // КонецЕсли;
    // КонецЕсли;  // таким образом  добавляется в оба списка//
              
    КонецПроцедуры // ОбработкаПодбора

    //**************************************************  

        Процедура ОбработкаПодбора2(ЭЛ,Конт)


    Если ПустоеЗначение(ЭЛ)=0 Тогда
    Если ЭЛ.ЭтоГруппа()=0 Тогда
    Если Должности.НайтиЗначение(ЭЛ)=0 Тогда
    Должности.ДобавитьЗначение(ЭЛ.Наименование,"ЭЛ" );
    Иначе
    Предупреждение("Профессия уже выбрана в списке!",10);
    КонецЕсли;                                            
    КонецЕсли;
    КонецЕсли;
              
    КонецПроцедуры  //а так только в первый
  • Направления программирования :: Web :: HTML/DHTML
  • Бардак здесь: http://jk.news.az:8080/
    У главной менюшки (верхней горизонтальной) есть выпадающие подменю в некоторых пунктах.
    Всё бы хорошо, но в этих подменюшках пропадает маркер у первого пункта в IE7.
    Маркеры сделаны не через list-style, а фоновой картинкой.

    Первая мысль была такая: у родительского списка первому элементу фон отменяется сознательно, так может IE7 распространяет это правило и на вложенные списки. Но нет: если правило :first-child { background:none; } убрать, то глюк в IE7 всё равно остаётся, и объяснения ему уже не находится.

    Чего я не вижу? Где собака порылась?
  • Практические разделы :: Базы данных
  • неожиданное, но приятное открыл открытие: как птица (1.5+), так и MySQL 5+ (за другие версии не знаю) умеют понимать обёрнутые в апострофы значения в select, insert и update, а также переданные в процедуру параметры ))

    наглядно, вот о чём я

    select * from T where num=1 and text='qqq';
    update T set num=1, text='qqq';

    этому будет эквивалентно:

    select * from T where num='1' and text='qqq';
    update T set num='1', text='qqq';

    то есть, отныне не надо мне выбирать, что обернуть в апострофы, а что нет - можно тупо все параметры обернуть и всё :)

    Только интересно, как это согласуется со стандартом
  • Использую компонент IBDataSet. В мануале на ibase.ru написано ,что "можно производить поиск вызывая метод Locate". Но это не работает.
    Как можно найти запись по вводу значения в Edit?
    Код:
    procedure TOstat.Edit2Change(Sender: TObject);
    begin
    DM.IBDSOstatok.Locate('NAME_M',Ostat.Edit2.Text,[]);
    end;
  • Учимся программировать :: Начинающим
  • Доброго времени суток.
    Ребята, я не знала в какой раздел писать, поэтому написала сюда. Если что перебросте... :-&

    Вопрос чисто теоретический =))
    Как пишется ПО для сенсорных терминалов(например инфо-киоски всякие, в банках бывают терминалы где номерки выдают... )?
    Интересно это обычные вин-приложения как-то туда засовывают, или как сайт пишут, или может в спец среде и под конкретный терминал... Может кто-нибудь знает?..  :-&

А теперь прощаемся с Вами до следующего выпуска.


С уважением, команда Клуба.


В избранное